完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用KL25开发板,作SPI slave,时钟4.2Mhz,收发通过SPI中断完成。现在调试发现主机发过来的数据,从机丢包严重,接收2-3个字节就可能丢一个,时钟降到2MHz就没有此问题,请问4.2MHz的时钟太高了吗?还是SPI中断已经不够快了,通过DMA会有改善吗?主设备SPI的频率4MHz多。
注:通过示波器看过波形,主机发送没有问题 诚求大虾指点 |
|
相关推荐
6个回答
|
|
请问你是在中断函数中,才读取收到的数据吗?
如果是这样的话,应该可以解释,用示波器观察到的数据是正确,而实际收到的数据有丢包的现象。 还有关于你想利用DMA增加读取收到数据的速度而避免丢包,我觉得应该是可行的,值得一试! |
|
|
|
是的,在中断函数中读取的,进一次读一个,我很奇怪哦,为什么这样也会丢,也不算是特别快把,可否详细解析? |
|
|
|
看一下手册吧!描述了从模式下,各种时序的要求。
|
|
|
|
谢谢你的回复,我觉得还是在中断函数中读取数值过程,新的数据已经传送到MCU了,从而导致丢包的可能性大一点。 |
|
|
|
有一个情况也需要考虑,在实际测试的时候,SPI通信线路过长也是一个因素。我见过有朋友做测试的,长20cm的杜邦线连接同一块板子上的SPI主从机,速度比较快的时候就错相了。
不过你那个问题可能是中断没有处理过来,如果是KL25的话,典型的bus clock 24MHz,core clock 48MHz,中断里内容稍微多一点就搞不定4M的通信波特率了。 但是,你仍然可以通过提高编译器的优化级别试一下,效果还是比较明显的,估计多少能缓解一下丢包的情况。最后,测试程序设计不合理可能也会影响。如果用UART串口输出显示,串口的波特率很低,可能会丢掉一些数据不能显示,而如果是用JLink看的话,有些寄存器被JLink一读,标志位就没了,自然就存不到程序里。 |
|
|
|
谢谢楼主了,十分感谢,赞一个。
|
|
|
|
只有小组成员才能发言,加入小组>>
1932个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36415 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4811 浏览 1 评论
6100 浏览 1 评论
6813 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4244 浏览 0 评论
641浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
638浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
639浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
725浏览 2评论
836浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 00:32 , Processed in 1.115487 second(s), Total 59, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号