【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)