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

查看: 2545|回复: 2

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

[复制链接]

1

主题

4

回帖

0

蝴蝶豆

初级会员

最后登录
2018-1-11
发表于 2015-2-3 16:42:09 | 显示全部楼层 |阅读模式
本帖最后由 dwj00 于 2015-2-3 16:43 编辑

当我用硬件SPI接口去初始化CC1120时,初始化失败,但我把SPI接口改成用软件模拟时,初始化能成功
实在找不出问题,特请教。
附:软件SPI发送代码如下:
  1. static u8 SpiWriteRead(u8 Data)
  2. {
  3.         for (int i=0;i<8;i++)
  4.         {
  5.                 if (Data&0x80)
  6.                         GPIOA->BSRR=CC112X_SI;
  7.                 else
  8.                         GPIOA->BRR=CC112X_SI;
  9.                 Data<<=1;
  10.                 GPIOA->BSRR=CC112X_SCK;
  11.                 if (GPIOA->IDR&CC112X_SO) Data++;
  12.                 GPIOA->BRR=CC112X_SCK;
  13.         }
  14.         DebugOut(Data);
  15.         return Data;
  16. }
复制代码
硬件SPI初始化化代码和发送数据函数如下:

  1. void InitSPI()
  2. {
  3.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOF,ENABLE);
  4.     GPIO_InitTypeDef GPIODef1 ={GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5,    //GPIO_Pin
  5.                                 GPIO_Mode_AF,                    //GPIO_Mode
  6.                                 GPIO_Speed_Level_3,                //GPIO_Speed,50M
  7.                                 GPIO_OType_PP,                    //GPIO_OType
  8.                                 GPIO_PuPd_NOPULL                //GPIO_PuPd
  9.                                 };
  10.     SPI_InitTypeDef SPIDef = {    SPI_Direction_2Lines_FullDuplex,//SPI_Direction
  11.                                 SPI_Mode_Master,                //SPI_Mode
  12.                                 SPI_DataSize_8b,                //SPI_DataSize
  13.                                 SPI_CPOL_Low,                    //SPI_CPOL
  14.                                 SPI_CPHA_1Edge,                    //SPI_CPHA
  15.                                 SPI_NSS_Soft,                    //SPI_NSS
  16.                                 SPI_BaudRatePrescaler_64,        //SPI_BaudRatePrescaler
  17.                                 SPI_FirstBit_MSB,                //SPI_FirstBit
  18.                                 7                                //SPI_CRCPolynomial
  19.                                 };
  20.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
  21.     GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_0);
  22.     GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_0);
  23.     GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_0);
  24.     GPIO_Init(GPIOA,&GPIODef1);
  25.     SPI_Init(SPI1,&SPIDef);
  26.     SPI_Cmd(SPI1,ENABLE);
  27. }

  28. static u8 SpiWriteRead(u8 Data)
  29. {
  30.         while (!(SPI->SR&SPI_SR_TXE));
  31.         SPI->DR=Data;
  32.         while (!(SPI->SR&SPI_SR_RXNE));
  33.         Data=SPI->DR;
  34.         DebugOut(Data);        
  35.         return Data;
  36. }
复制代码





回复

使用道具 举报

1

主题

4

回帖

0

蝴蝶豆

初级会员

最后登录
2018-1-11
 楼主| 发表于 2015-2-3 17:05:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2018-1-5
发表于 2015-6-16 01:00:16 | 显示全部楼层
你好,我现在也在用GPIO模拟SPI调试CC1120但死活调不通,感觉是SPI口通信的问题,但我参考你的代码,发现寄存器还是设置不成功,想请您把你的代码发给我一份,以供学习之用,谢谢您!!
我的邮箱:karl_zhang2003@163.com
我的QQ:252568116 可以加我好友,共同讨论问题
回复 支持 反对

使用道具 举报

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