你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F405使用LL库建立SPI通讯报溢出是什么原因?

[复制链接]
晚风行舟 提问时间:2024-10-24 14:52 / 未解决

调试了2周,尝试各种办法,修改参数,修改速度,重新建立工程,尝试查询、中断、DAM方式接收SPI数据均提示数据溢出,并且接收的数据也不对,要么是0,要么是65525。已经排除了硬件问题,因为使用HAL库可以实现SPI通讯,下面是程序截图:

03.png01.png02.png

收藏 评论2 发布时间:2024-10-24 14:52

举报

2个回答
xmshao 回答时间:3 天前
既然使用HAL库没问题,硬件方面应该是没啥问题了。


配置方面,使用CubeMx的话,操作是一样的,只是生成的工程代码写法有差别。


从你描述的问题现象来看,感觉完全没有正常通信,还不仅仅溢出的问题。


你看看是否用户代码哪里有问题,我这边使用STM32F4的开发板,选择SPI1自发自收


是正常的。发送采用DMA方式,接收采用中断方式。


我添加的用户代码,供参考:


LL_DMA_ConfigAddresses(DMAx, LL_DMA_STREAM,  (uint32_t)&SPITXData0],(uint32_t) &(SPI1->DR),LL_DMA_DIRECTION_MEMORY_TO_PERIPH);


LL_DMA_SetDataLength(DMAx, LL_DMA_STREAM, SIZE);


LL_DMA_EnableIT_TC(DMAx, LL_DMA_STREAM);


LL_SPI_EnableDMAReq_TX(SPI1);


LL_SPI_EnableIT_RXNE(SPI1);

LL_DMA_EnableStream(DMAx, LL_DMA_STREAM);
LL_SPI_Enable(SPI1);



根据RXNE事件在其中断里进行数据接收:
SPIRXData[cnt++]=SPI1->DR;


如果中断接收的话,中断处理程序尽量简洁点。可以先将波特率放慢点。
rrr.png

butterflyspring 回答时间:3 天前
可以尝试先接收1个字节,正确后再接收2个字节,保证前面正确,这样才方便逐步发现和解决问题。


另外注意,SPI通讯主从要保持步调一致才行。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版