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