ADSP-BF609在CCES下SPI驱动调试问题解决方案

来源:本站
导读:目前正在解读《ADSP-BF609在CCES下SPI驱动调试问题解决方案》的相关信息,《ADSP-BF609在CCES下SPI驱动调试问题解决方案》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ADSP-BF609在CCES下SPI驱动调试问题解决方案》的详细说明。
简介:在CCES环境下,ADI 自带了驱动接口函数,为驱动调试省下很多精力;但是这为人熟知的SPI,在调试过程中还是遇到了挫折;最大的问题就是死机。

BF609 CCES下的SPI驱动调试

在CCES环境下,ADI 自带了驱动接口函数,为驱动调试省下很多精力;但是这为人熟知的SPI,在调试过程中还是遇到了挫折;

最大的问题:死机。

实际的SPI驱动接口是全双工功能的,所以传输完成后,接口函数的返回值是ADI_SPI_TRANSCEIVER_PROCESSED,没有区分是发送完成还是接收完成;我的应用只需要半双工就可以了,按我的思路,是需要区分的,所以,我在驱动的StartInterruptTransceiver()函数里做了修改,判断如果提交的接收buffer是NULL时,只使能transmit;如果提交的发送buffer是NULL时,只使能resecver;这本来毫无争议,实际上这是对驱动的一种优化;但当发送21个字节时,系统崩溃了,PC指针留在出中断,返回主函数时,很像堆栈溢出,查找每个流程和函数,没有发现任何原因,人都快崩溃了;一个偶然的机会,找到了原因,跟代码毫无关系,是由于CCES没有配置使用外部128MB的RAM,导致内存不足,系统崩溃;

第二个bug:丢数据。

发送8字节以上的帧,会插入0X00,经琢磨,想到是总线速度太慢的问题(之前是50MHz,SPI波特率是25MHz,slave模式),总线改为25MHz,丢的字节更多了;改为最大的200MHz,居然还是丢;最终放弃了data interrupt模式,改为DMA模式。

提醒:《ADSP-BF609在CCES下SPI驱动调试问题解决方案》最后刷新时间 2024-03-14 01:02:02,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ADSP-BF609在CCES下SPI驱动调试问题解决方案》该内容的真实性请自行鉴别。