本帖最后由 zjsxfkf 于 2017-10-27 09:31 编辑
前段时间买了块阿波罗的开发板STM32F429,在测试底层驱动,前天发现一个问题,目前还没有找到解决办法;
1、使用的是开发板的U盘(host)实验的例子,增加了在U盘加载后,不停的读、写、比较文件的准确性,我是使用芯片
自带的LCD控制器,使用RGB显示屏。
2、发现在测试过程中,会有USB读写错误,返回USBH_MSC_PHASE_ERROR,这个是USB的一个硬件错误,现在还没有进一步
追踪进USB协议内部,但是我只要将LTDC中的LTDCEN位去掉,即关闭LTDC控制使能,无论再怎么测试一个晚上,也不会发生读写错误的问题。
3、我在使用33MHZ的LTDC刷新频率的时候,很快就会出现错误,我降低刷新频率至12.75MHZ,依然会出现错误,但是这个正常运行的时间明显
比33MHZ的要长,按理跟硬件走线应该不太会有多大关系,频率都还是比较低的,USB使用的也是FS模式,而且两边走线应该都是相互分离的
4、这里申请的内存都是使用了内部sram的20K空间,来进行数据读写比较,当然外部也试过,问题一样,不知道是不是芯片内部总线的问题。
5、不知道有没有其他人遇到类似问题,或者已经解决了这个问题的,大家相互讨论。
附上测试代码:
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
稳定性来说,一般都是寄存器版本好。
1,部分例程,如遇到问题,确实换寄存器会好。你这个情况,我发现是反复写一个文件的,你测试多久(写多少次会出问题)出问题?
2,重启很正常,如果你仔细看我们教程,就应该看到usb一键下载电路,引起的。这个你没事不要不停的上点。
3,这个问题,我有时间的话帮你试试
最后,我记得USBH_Process函数,应该被周期性的调用才对。
你试试不要在USH_User_App里面做你的事情,而是改到main函数,试试看。
@正点原子 这个测试就是几秒到几分钟的事情,如果LTDC刷新频率在33MHZ,基本在一分钟内,肯定会报错
一周热门 更多>