Stm32F103 的SPI通讯与消息的区别,为什么

21ic官方微信-->
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
请完成以下验证码
STM32F103 高速SPI 通信问题,你会吗
资深技术员, 积分 381, 距离下一级还需 119 积分
资深技术员, 积分 381, 距离下一级还需 119 积分
本帖子中包含更多资源
才可以下载或查看,没有帐号?
高级工程师, 积分 5820, 距离下一级还需 2180 积分
高级工程师, 积分 5820, 距离下一级还需 2180 积分
---------------------
资深技术员, 积分 381, 距离下一级还需 119 积分
资深技术员, 积分 381, 距离下一级还需 119 积分
实习生, 积分 46, 距离下一级还需 4 积分
实习生, 积分 46, 距离下一级还需 4 积分
实习生, 积分 46, 距离下一级还需 4 积分
实习生, 积分 46, 距离下一级还需 4 积分
助理工程师, 积分 1527, 距离下一级还需 473 积分
助理工程师, 积分 1527, 距离下一级还需 473 积分
助理工程师, 积分 1527, 距离下一级还需 473 积分
助理工程师, 积分 1527, 距离下一级还需 473 积分
中级工程师, 积分 3271, 距离下一级还需 1729 积分
中级工程师, 积分 3271, 距离下一级还需 1729 积分
中级工程师, 积分 3011, 距离下一级还需 1989 积分
中级工程师, 积分 3011, 距离下一级还需 1989 积分
中级工程师, 积分 3011, 距离下一级还需 1989 积分
中级工程师, 积分 3011, 距离下一级还需 1989 积分
扫描二维码,随时随地手机跟帖
时间类勋章
技术高手奖章
人才类勋章
涓涓之细流
发帖类勋章
突出贡献奖章
等级类勋章
沉静之湖泊
发帖类勋章
时间类勋章
技术导师奖章
人才类勋章
技术领袖奖章
人才类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
您需要登录后才可以回帖关于STM32&SPI接口调试时数据错位或部分正确的解决方法
在调试STM32的SPI接口时,我使用的是SPI1和SPI2通讯:
当SPI2为主设备,SPI1为从设备时,通过测试连续发送和接收32个连续字节,通讯一切正常;以为SPI通讯就此解决,原来用库函数也这么简单。还是不放心,把主设备改为SPI1,从设备变为SPI2,这时问题出现了,数据只有部分正确或错位,这个头大啊!
遇到和大家一样的问题:数据错位或部分正确;在网络上搜寻大家的解决方法,基本上都是遇到同样的问题,而没有好的解决办法。经过尝试各种办法,查找官方资料,经过近两天的不断尝试,终于发现了问题的原因:在使能SPI1和SPI2后需要第一时间清除接收缓冲区中断标志。
附源代码:
1、设置SPI1和SPI2 void SPI_Configuration(void)
SPI_InitTypeDef SPI_InitS
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullD
SPI_InitStructure.SPI_Mode = SPI_Mode_M
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_L
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2E
SPI_InitStructure.SPI_NSS = SPI_NSS_S
SPI_InitStructure.SPI_BaudRatePrescaler =
SPI_BaudRatePrescaler_256; SPI_InitStructure.SPI_FirstBit =
SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_InitStructure.SPI_Mode = SPI_Mode_S
SPI_Init(SPI2, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
SPI_I2S_ClearITPendingBit(SPI1,
SPI_I2S_IT_RXNE);
SPI_Cmd(SPI2, ENABLE);
SPI_I2S_ClearITPendingBit(SPI2,
SPI_I2S_IT_RXNE);
2、主程序中测试代码:
#define BufferSize 32
u8 SPI1_Buffer_Tx[BufferSize] =
{0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
0x1C,0x1D,0x1E,0x1F,0x20};
u8 SPI2_Buffer_Tx[BufferSize] =
{0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
0x6C,0x6D,0x6E,0x6F,0x70};
u8 SPI1_Buffer_Rx[BufferSize], SPI2_Buffer_Rx[BufferSize];
u8 Tx_Idx = 0, Rx_Idx = 0, k = 0;
BitAction TransferStatus1 = Bit_RESET, TransferStatus2 =
Bit_RESET;
BitAction TransferStatus3 = Bit_RESET, TransferStatus4 =
Bit_RESET;
& SPI1_NSS = 0;
& while(Tx_Idx
//SPI1 MASTER
//SPI2 SLAVE
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);
SPI_I2S_SendData(SPI2,
SPI2_Buffer_Tx[Tx_Idx]);&
SPI_I2S_SendData(SPI1,
SPI1_Buffer_Tx[Tx_Idx++]);&&&&
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE)==RESET);
SPI2_Buffer_Rx[Rx_Idx] = SPI_I2S_ReceiveData(SPI2);
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET);
SPI1_Buffer_Rx[Rx_Idx++] =
SPI_I2S_ReceiveData(SPI1);&
//SPI1---SLAVE
//SPI2---MASTER
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE)==RESET);
SPI_I2S_SendData(SPI1,
SPI2_Buffer_Tx[Tx_Idx]);&
SPI_I2S_SendData(SPI2,
SPI1_Buffer_Tx[Tx_Idx++]);&&&&
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET);
SPI1_Buffer_Rx[Rx_Idx] = SPI_I2S_ReceiveData(SPI1);
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE)==RESET);
SPI2_Buffer_Rx[Rx_Idx++] =
SPI_I2S_ReceiveData(SPI2);&&&&&&
&&& SPI1_NSS =
&&&&SART_SendDataString(SPI1_Buffer_Rx,BufferSize);
&&&&UART_SendDataString(SPI2_Buffer_Rx,BufferSize);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。 上传我的文档
 下载
 收藏
粉丝量:122
网络技术员,毕业于北大青鸟!!现有自己的网络工作室!
 下载此文档
STM32的SPI通信总结(含DMA)
下载积分:3000
内容提示:STM32的SPI通信总结(含DMA)
文档格式:DOCX|
浏览次数:109|
上传日期: 01:22:56|
文档星级:
全文阅读已结束,如果下载本文需要使用
 3000 积分
下载此文档
该用户还上传了这些文档
STM32的SPI通信总结(含DMA)
关注微信公众号STM32SPI通信_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32SPI通信
&&是TXT的可以有直接用方便大家
你可能喜欢他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 通讯与消息的区别 的文章

 

随机推荐