EtherCAT之Lan9252调试笔记
来源:互联网 发布:淘宝拍卖房子 编辑:程序博客网 时间:2024/06/05 06:13
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)搬运长度不够
阅读全文
0 0
- EtherCAT之Lan9252调试笔记
- 给linux移植Ethercat笔记
- ethercat
- EtherCAT
- EtherCAT之对象字典解析
- EtherCAT之对象字典解析
- xmc4300 ethercat 学习之路
- LinuxCNC+EtherCAT(4)之LinuxCNC overview
- 【note】EtherCAT Configurator 使用之主菜单介绍
- LinuxCNC+EtherCAT(5)之关于LinuxCNC和EMC
- LinuxCNC+EtherCAT(6)之LinuxCNC使用,翻译
- redhat9调试笔记之防火墙
- 调试笔记之观察中断
- asoc 调试笔记之 route
- asoc 调试笔记之 wm5102
- EtherCAT介绍
- EtherCAT 学习
- ethercat状态机
- sql常用(二)
- 1010. 一元多项式求导 (25)
- iOS 打开应用设置
- es数据库学习资料
- 个人工作之余的学习总结
- EtherCAT之Lan9252调试笔记
- WebLogic8.1 配置SSL/HTTPS单向认证
- request.getParameter() 和request.getAttribute() 区别
- 数据库的优化
- eclipse远程debug
- 20171026 工作笔记
- Sentry简单的shell命令
- 数据仓库与ODS的区别
- 【JavaScript】JavaScript标准阐述