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调试笔记相关推荐

  1. 调试笔记--jlink 变量转实时波形小技巧

    调试笔记–jlink 变量转实时波形小技巧 上篇讲了jlink RTT组件在RAM中开辟一段内存,将printf字符串存入然后通过jlink调试接口读取RAM,将printf字符串在jlink-RTT ...

  2. 调试笔记--keil 测量周期小技巧

    调试笔记–keil 测量周期小技巧 本文参考安富莱专题教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&ext ...

  3. 调试笔记--keil 断点调试小技巧

    调试笔记–keil 断点调试小技巧 给变量打断点 调试不熟悉的项目时,卧槽!怎么这么多全局变量?这玩意又在那修改了??这个时候会给变量打断点就能省好多事. 将要监视的全局变量添加到watch窗口 选中 ...

  4. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  5. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...

    之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...

  6. RK3399 GT1X触摸屏驱动调试笔记

    硬件环境 1.Firefly AIO-3399(AI)开发版: 2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688. 操作系统 Android 7.2 for rockship Ste ...

  7. Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记

    1.开发平台 CPU:RK3566 编译环境:Ubuntu18.04 内核版本:kernel 4.19 2.目的 因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核 ...

  8. 雅马哈四轴机器人调试笔记

    雅马哈四轴机器人调试笔记 1.0 先简单说下硬件,如下图对着插就行,雅马哈四轴主要硬件有控制器跟机械手,机械手到控制器主要有4跟电机接口电缆,每2个轴有一个编码器接口电缆,每根轴有一个配置的数据备份电 ...

  9. OMAP3530-mini调试笔记(2)

    PS:USB不能正常工作的根本原因参见调试笔记(3) 各个版本的x-loader和u-boot对kernel的支持情况: U-Boot 2011.12-00010-ga3eb89c (Jan 29 2 ...

最新文章

  1. 值转换器IValueConverter
  2. ADO.NET知识学习总结
  3. 从来富贵险中求 为何低学历的人能成为亿万富翁
  4. 使用ASIFormDataRequest打印参数和给项目添加测试账号
  5. ELK+Kafka集群日志分析系统
  6. A Simple Problem with Integers POJ - 3468 (线段树)
  7. 稀疏矩阵十字链表类java_稀疏矩阵的十字链表存储表示
  8. 使用JUnitParams进行参数化的JUnit测试
  9. Linux禁用user01账户,Linux 管理用户 useradd
  10. struts单例模式 java_Java单例设计模式详细介绍
  11. 预备作业03 20162316刘诚昊
  12. 英特尔成立集成光电研究中心 加速光互连I/O创新
  13. SharePoint 2010 - User Profile Sync Service自动停止
  14. emacs coding UTF-8 保存报错
  15. 使用git bash提交代码到github托管
  16. 简单聊聊智能硬件的固件测试
  17. Mezzanine基于 Django 的CMS系统框架搭建
  18. python:talib 计算 SAR 用 pro_api
  19. CDN是什么?以及CDN的原理
  20. Matlab 中 residuez函数的使用

热门文章

  1. 《谁动了我的奶酪》读后感 他人感悟
  2. Python:实现fuzzy operations模糊运算算法(附完整源码)
  3. 你不是不优秀,而是太着急
  4. 禅道 upgrade.php,zentao禅道安装升级
  5. 这些MOS管的特点和分类,你未必全都知道
  6. cadence一些快捷键
  7. 如何有效的快速提高自己的编程能力
  8. 学习突围3 - 关于精力
  9. python量化策略——改进的美林时钟轮动策略(三)
  10. A1、A2、A3、A4纸都是多大尺寸