【IoT】蓝牙BLE基础:CC254x通信系列之模拟SPI协议

举报
产品人卫朋 发表于 2021/10/29 22:44:58 2021/10/29
2.1k+ 0 0
【摘要】 CC254x 模拟 SPI: 1、宏定义: #define SPI_CS P1_4 #define SPI_CLK P1_5#define SPI_MOSI P1_7 #define S...

CC254x 模拟 SPI:

1、宏定义:


      #define SPI_CS                          P1_4
      #define SPI_CLK                         P1_5
      #define SPI_MOSI                        P1_7
      #define SPI_MISO                        P1_6
  
 

2、引脚配置


      void SPI_Init(void)
      {
          P1SEL &= 0x0F; //将 P1.4 P1.5 P1.6 P1.7 设置为GPIO引脚          00001111
          P1DIR |= 0xB0; //设置 P1.4 P1.5, p1.7 引脚为输出, P1.6为输入    10110000
      }
  
 

3、读字节函数


      uint8 SPI_ReadByte(void)
      {
          unsigned char i=0, in=0, temp=0;
          //先拉低, 然后拉高的时候, 读取MISO
          SPI_CLK = 0;
          for(i=0;i<8;i++){
              in = (in << 1);
              SPI_CLK = 1;
              //SPI_DLY_us(1);
              temp = SPI_MISO;
              if (temp == 1){
                  in = in | 0x01;
              }
              SPI_CLK = 0;
              //SPI_DLY_us(1);
          }
          return in;
      }
  
 

4、写字节函数


      void SPI_SendByte(uint8 cmd)
      {
          unsigned char i=8, temp=0;
          //SPI_CS=0;
          for(i=0;i<8;i++){
              SPI_CLK=0;
              temp = cmd&0x80;
              if (temp == 0)
              {
                  SPI_MOSI = 0;
              }
              else
              {
                  SPI_MOSI = 1;
              }
              cmd<<=1;;
              SPI_CLK=1;
              //SPI_DLY_us(1);
          }
          SPI_MOSI=1;
      }
  
 

5、读数据


      unsigned char ReadRawRC(unsigned char Address)
      {
        unsigned char ucAddr, ucResult=0;
        SPI_CS=0;
        ucAddr = ((Address<<1)&0x7E)|0x80;
        SPI_SendByte(ucAddr);
        ucResult = SPI_ReadByte();
        SPI_CS = 1;
        return ucResult;
      }
  
 

6、写数据


      void WriteRawRC(unsigned char Address, unsigned char value)
      {
        unsigned char  ucAddr;
        SPI_CS=0;
        ucAddr = ((Address<<1)&0x7E);
        SPI_SendByte(ucAddr);
        SPI_SendByte(value);
        SPI_CS = 1;
      }
  
 

文章来源: blog.csdn.net,作者:简一商业,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/liwei16611/article/details/73420685

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。