dwj00 发表于 2015-2-3 16:42:09

用STM32F030F4的SPI初始化化CC1120失败,请教

本帖最后由 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;
}





dwj00 发表于 2015-2-3 17:05:30

问题找到
请参考: https://www.stmcu.org.cn/module/forum/thread-566825-1-1.html

张小如 发表于 2015-6-16 01:00:16

你好,我现在也在用GPIO模拟SPI调试CC1120但死活调不通,感觉是SPI口通信的问题,但我参考你的代码,发现寄存器还是设置不成功,想请您把你的代码发给我一份,以供学习之用,谢谢您!!
我的邮箱:karl_zhang2003@163.com
我的QQ:252568116 可以加我好友,共同讨论问题
页: [1]
查看完整版本: 用STM32F030F4的SPI初始化化CC1120失败,请教