本帖最后由 dwj00 于 2015-2-3 16:43 编辑
当我用硬件SPI接口去初始化CC1120时,初始化失败,但我把SPI接口改成用软件模拟时,初始化能成功
实在找不出问题,特请教。
附:软件SPI发送代码如下:
- static u8 SpiWriteRead(u8 Data)
- {
- for (int i=0;i<8;i++)
- {
- if (Data&0x80)
- GPIOA->BSRR=CC112X_SI;
- else
- GPIOA->BRR=CC112X_SI;
- Data<<=1;
- GPIOA->BSRR=CC112X_SCK;
- if (GPIOA->IDR&CC112X_SO) Data++;
- GPIOA->BRR=CC112X_SCK;
- }
- DebugOut(Data);
- return Data;
- }
复制代码 硬件SPI初始化化代码和发送数据函数如下:
- void InitSPI()
- {
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOF,ENABLE);
- GPIO_InitTypeDef GPIODef1 ={GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5, //GPIO_Pin
- GPIO_Mode_AF, //GPIO_Mode
- GPIO_Speed_Level_3, //GPIO_Speed,50M
- GPIO_OType_PP, //GPIO_OType
- GPIO_PuPd_NOPULL //GPIO_PuPd
- };
- SPI_InitTypeDef SPIDef = { SPI_Direction_2Lines_FullDuplex,//SPI_Direction
- SPI_Mode_Master, //SPI_Mode
- SPI_DataSize_8b, //SPI_DataSize
- SPI_CPOL_Low, //SPI_CPOL
- SPI_CPHA_1Edge, //SPI_CPHA
- SPI_NSS_Soft, //SPI_NSS
- SPI_BaudRatePrescaler_64, //SPI_BaudRatePrescaler
- SPI_FirstBit_MSB, //SPI_FirstBit
- 7 //SPI_CRCPolynomial
- };
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_0);
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_0);
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_0);
- GPIO_Init(GPIOA,&GPIODef1);
- SPI_Init(SPI1,&SPIDef);
- SPI_Cmd(SPI1,ENABLE);
- }
- static u8 SpiWriteRead(u8 Data)
- {
- while (!(SPI->SR&SPI_SR_TXE));
- SPI->DR=Data;
- while (!(SPI->SR&SPI_SR_RXNE));
- Data=SPI->DR;
- DebugOut(Data);
- return Data;
- }
复制代码
|
请参考: https://www.stmcu.org.cn/module/forum/thread-566825-1-1.html
我的邮箱:karl_zhang2003@163.com
我的QQ:252568116 可以加我好友,共同讨论问题