OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5314|回复: 2

关于SPI1和SPI2之间的通信的问题

[复制链接]

13

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2014-2-22
在线时间
2 小时
发表于 2014-4-26 21:26:08 | 显示全部楼层 |阅读模式
我想用MINI板子实现SPI1和SPI2之间的通信,SPI1是主,SPI2是从,代码如下:
 
[mw_shl_code=c,true]const u8 TEXT_Buffer_SPI[]={"MiniSTM32 SPI TEST"}; #define SIZE sizeof(TEXT_Buffer_SPI) u8 SPI1_Buffer_Rx[SIZE] = {0}; u8 SPI2_Buffer_Rx[SIZE] = {0}; int main(void) { u8 Tx_Counter = 0; u8 Rx_Counter = 0; u8 k = 0; SystemInit(); delay_init(72); //???±?????? NVIC_Configuration(); uart_init(9600); SPIx_Init(); while(Tx_Counter<SIZE) { SPI_I2S_SendData(SPI2,TEXT_Buffer_SPI[Tx_Counter]); //???ú??·??????? SPI_I2S_SendData(SPI1,TEXT_Buffer_SPI[Tx_Counter]); while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE) == RESET); //?????????????ò???? SPI2_Buffer_Rx[Rx_Counter] = SPI_I2S_ReceiveData(SPI2); // while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE) ==RESET); // SPI1_Buffer_Rx[Rx_Counter] = SPI_I2S_ReceiveData(SPI1); Tx_Counter++; Rx_Counter++; } printf("\r\n The SPI1 has sended data below : \r\n"); while(k<SIZE) { printf(" %0.2d \r ",TEXT_Buffer_SPI[k]); k++; } printf("\r\n The SPI2 has received data below : \r\n"); k = 0; while(k<SIZE) { printf("%0.2d\r",SPI2_Buffer_Rx[k]); k++; } while(1);[/mw_shl_code]
[mw_shl_code=c,true]SPI_InitTypeDef SPI_InitStructure; void SPIx_Init() { GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1|RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2|RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode=SPI_Mode_Master; SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL=SPI_CPOL_High; SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS=SPI_NSS_Soft; 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_Direction=SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode=SPI_Mode_Slave; SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL=SPI_CPOL_High; SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS=SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256; SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial=7; SPI_Init(SPI2,&SPI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel=SPI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=2; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); SPI_I2S_ITConfig(SPI1,SPI_I2S_IT_RXNE,ENABLE); SPI_Cmd(SPI1,ENABLE); SPI_I2S_ITConfig(SPI2,SPI_I2S_IT_RXNE,ENABLE); SPI_Cmd(SPI2,ENABLE); } [/mw_shl_code]

调试时发现一直停在while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE) == RESET); 说明SPI2一直没有接收到数据,这是怎么回事???求高手解答,谢谢了。
绝望的下一秒就是机遇和希望!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-3-30
在线时间
0 小时
发表于 2014-4-26 21:46:08 | 显示全部楼层
回复【楼主位】两个人的烟火:
---------------------------------
楼主的问题结局了么?我也遇到了同样的问题!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-27 00:29:48 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-11 09:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表