EtherCAT之Lan9252调试笔记
1.接口
完成以后先去读,0x64寄存器。如果值为0x87654321,则时序okay;否,则修改时序
2.访问Lan9252接口的时候
Byte1Byte2Byte3Byte4
数据线add[0+:16]add[16+:16]data[0+:16]data[16+:16]
地址线1组00000000100010000110
地址线2组010000110001110
3.DMA流程
1)CPU做状态机初始化
2) DMA写数据初始化
a) 读地址0x314;判断data[31]==1;是则跳转到状态b;否则跳转到状态c【这一步是为了判断当前是不是在写过程数据】
b) 写地址0x314,data[30]<= 1;【这一步是为了停止当前写过程数据】
c) 写地址0x310,data<={length,address};【address <= 0x1400,这是Lan9252写过程数据区的起始地址;Length <= 待搬运的数据长度,单位为byte】
d) 写地址0x314,data[31]<=1;【启动写操作】
e) 读地址0x314,判断data[0]==0?是,则开始DMA数据搬运;否,则停留在这个操作等待可用。【判断是否有可用空间,如果有,则Fifocnt <= data[8+:5]】
3)DMA数据搬运状态
a)发送第一个数据,fifocnt <= fifocnt - 1'b1;跳至b
b)判断Fificnt ==0?是,则跳转到c;否,则跳转到d
c) 读地址0x314,取Fifocnt <= data[8+:5],跳转到d
d)发送下一个数据,fifocnt <= fifocnt - 1'b1;跳转到e
e)判断是否发送完成;是,则跳转到f;否则跳转到b)
f)读0x310,判断当前数据是否写入【仅供测试】
g)读0x314,data[31]==0?是,则跳转到h;否,则等到
h)结束发送
4.DMA如果遇到问题排查的顺序
a)时序问题;(读寄存器0x64)
b)流程问题:
i. 确保DMA开始的时候,CPU已经完成初始化,从站状态机==8(仅适合当前工程)
ii.如果DMA不成功,DMA完成后,读0x310,看数据写入状态
5.调试Lan9252碰到的问题:
a)时序太快(CS持续时间太短;CS间隔时间太短)
b)DMA的时候,写入0x310的数据,地址和长度弄反了
c)DMA的时候,用两个cs写数据,三个cs读fifocnt;继续搬运数据的时候地址没有改回来
d)搬运长度不够
EtherCAT之Lan9252调试笔记相关推荐
- 调试笔记--jlink 变量转实时波形小技巧
调试笔记–jlink 变量转实时波形小技巧 上篇讲了jlink RTT组件在RAM中开辟一段内存,将printf字符串存入然后通过jlink调试接口读取RAM,将printf字符串在jlink-RTT ...
- 调试笔记--keil 测量周期小技巧
调试笔记–keil 测量周期小技巧 本文参考安富莱专题教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&ext ...
- 调试笔记--keil 断点调试小技巧
调试笔记–keil 断点调试小技巧 给变量打断点 调试不熟悉的项目时,卧槽!怎么这么多全局变量?这玩意又在那修改了??这个时候会给变量打断点就能省好多事. 将要监视的全局变量添加到watch窗口 选中 ...
- gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...
- keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...
之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...
- RK3399 GT1X触摸屏驱动调试笔记
硬件环境 1.Firefly AIO-3399(AI)开发版: 2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688. 操作系统 Android 7.2 for rockship Ste ...
- Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记
1.开发平台 CPU:RK3566 编译环境:Ubuntu18.04 内核版本:kernel 4.19 2.目的 因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核 ...
- 雅马哈四轴机器人调试笔记
雅马哈四轴机器人调试笔记 1.0 先简单说下硬件,如下图对着插就行,雅马哈四轴主要硬件有控制器跟机械手,机械手到控制器主要有4跟电机接口电缆,每2个轴有一个编码器接口电缆,每根轴有一个配置的数据备份电 ...
- OMAP3530-mini调试笔记(2)
PS:USB不能正常工作的根本原因参见调试笔记(3) 各个版本的x-loader和u-boot对kernel的支持情况: U-Boot 2011.12-00010-ga3eb89c (Jan 29 2 ...
最新文章
- 值转换器IValueConverter
- ADO.NET知识学习总结
- 从来富贵险中求 为何低学历的人能成为亿万富翁
- 使用ASIFormDataRequest打印参数和给项目添加测试账号
- ELK+Kafka集群日志分析系统
- A Simple Problem with Integers POJ - 3468 (线段树)
- 稀疏矩阵十字链表类java_稀疏矩阵的十字链表存储表示
- 使用JUnitParams进行参数化的JUnit测试
- Linux禁用user01账户,Linux 管理用户 useradd
- struts单例模式 java_Java单例设计模式详细介绍
- 预备作业03 20162316刘诚昊
- 英特尔成立集成光电研究中心 加速光互连I/O创新
- SharePoint 2010 - User Profile Sync Service自动停止
- emacs coding UTF-8 保存报错
- 使用git bash提交代码到github托管
- 简单聊聊智能硬件的固件测试
- Mezzanine基于 Django 的CMS系统框架搭建
- python:talib 计算 SAR 用 pro_api
- CDN是什么?以及CDN的原理
- Matlab 中 residuez函数的使用