专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
NXP
KL25 SPI从机中断接收丢数据的问题
2019-07-15 17:32
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
NXP MCU
6484
6
1386
使用
KL25
开发板
,作SPI slave,时钟4.2Mhz,收发通过SPI中断完成。现在调试发现主机发过来的数据,从机丢包严重,接收2-3个字节就可能丢一个,时钟降到2MHz就没有此问题,请问4.2MHz的时钟太高了吗?还是SPI中断已经不够快了,通过DMA会有改善吗?主设备SPI的频率4MHz多。
注:通过示波器看过波形,主机发送没有问题
诚求大虾指点
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
LY0206
1楼-- · 2019-07-15 18:00
请问你是在中断函数中,才读取收到的数据吗?
如果是这样的话,应该可以解释,用示波器观察到的数据是正确,而实际收到的数据有丢包的现象。
还有关于你想利用DMA增加读取收到数据的速度而避免丢包,我觉得应该是可行的,值得一试!
加载中...
莎莎miu~
2楼-- · 2019-07-15 22:28
精彩回答 2 元偷偷看……
加载中...
ccly0208
3楼-- · 2019-07-15 23:30
看一下手册吧!描述了从模式下,各种时序的要求。
加载中...
莎莎miu~
4楼-- · 2019-07-16 00:53
ccly0208 发表于 2014-12-31 15:33
看一下手册吧!描述了从模式下,各种时序的要求。
谢谢你的回复,我觉得还是在中断函数中读取数值过程,新的数据已经传送到MCU了,从而导致丢包的可能性大一点。
加载中...
suyong_yq
5楼-- · 2019-07-16 01:11
有一个情况也需要考虑,在实际测试的时候,SPI通信线路过长也是一个因素。我见过有朋友做测试的,长20cm的杜邦线连接同一块板子上的SPI主从机,速度比较快的时候就错相了。
不过你那个问题可能是中断没有处理过来,如果是KL25的话,典型的bus clock 24MHz,core clock 48MHz,中断里内容稍微多一点就搞不定4M的通信波特率了。
但是,你仍然可以通过提高编译器的优化级别试一下,效果还是比较明显的,估计多少能缓解一下丢包的情况。最后,测试程序设计不合理可能也会影响。如果用UART串口输出显示,串口的波特率很低,可能会丢掉一些数据不能显示,而如果是用JLink看的话,有些寄存器被JLink一读,标志位就没了,自然就存不到程序里。
加载中...
rzh188
6楼-- · 2019-07-16 06:20
谢谢楼主了,十分感谢,赞一个。
加载中...
一周热门
更多
>
相关问题
手把手学会例程系列:i.MX<二>:图解i.mx53源码补丁+烧录(...
59 个回答
从零开始MQX开发之二 创建与调试MQX项目
24 个回答
7009: Trim value invalid, value is blank or zero是什么错误
0 个回答
怎么头像消失啊?
23 个回答
求推荐KINETIS评估板:必备USB HS,ETHERNET
5 个回答
快点围观,USB 2.0协议资料分享
99 个回答
求助:PE中如何使用MK10DX256VMC7!(已解决)
12 个回答
希望来点MQX相关的教程资料。
12 个回答
相关文章
基于IMX6Q移植uboot2018-09——添加单板
0个评论
IMX6UL定时器按键消抖实验
0个评论
I.MX6U处理器LED灯点亮汇编程序代码编写
0个评论
在NXP I.MX6上做一个基于Opencv和OpenGL的打砖块游戏
0个评论
【RFID安全】浅谈卡片破解
0个评论
LM75a
0个评论
emwin字库制作及汉字显示
0个评论
STM32学习之I2C
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
NXP
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
如果是这样的话,应该可以解释,用示波器观察到的数据是正确,而实际收到的数据有丢包的现象。
还有关于你想利用DMA增加读取收到数据的速度而避免丢包,我觉得应该是可行的,值得一试!
谢谢你的回复,我觉得还是在中断函数中读取数值过程,新的数据已经传送到MCU了,从而导致丢包的可能性大一点。
不过你那个问题可能是中断没有处理过来,如果是KL25的话,典型的bus clock 24MHz,core clock 48MHz,中断里内容稍微多一点就搞不定4M的通信波特率了。
但是,你仍然可以通过提高编译器的优化级别试一下,效果还是比较明显的,估计多少能缓解一下丢包的情况。最后,测试程序设计不合理可能也会影响。如果用UART串口输出显示,串口的波特率很低,可能会丢掉一些数据不能显示,而如果是用JLink看的话,有些寄存器被JLink一读,标志位就没了,自然就存不到程序里。
一周热门 更多>