【IoT】蓝牙BLE基础:CC254x通信系列之模拟SPI协议
        【摘要】 
                    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)