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

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;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

产品人卫朋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值