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

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

CC254x 模拟 SPI:

1、宏定义:


  
  1. #define SPI_CS P1_4
  2. #define SPI_CLK P1_5
  3. #define SPI_MOSI P1_7
  4. #define SPI_MISO P1_6

2、引脚配置


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

3、读字节函数


  
  1. uint8 SPI_ReadByte(void)
  2. {
  3. unsigned char i=0, in=0, temp=0;
  4. //先拉低, 然后拉高的时候, 读取MISO
  5. SPI_CLK = 0;
  6. for(i=0;i<8;i++){
  7. in = (in << 1);
  8. SPI_CLK = 1;
  9. //SPI_DLY_us(1);
  10. temp = SPI_MISO;
  11. if (temp == 1){
  12. in = in | 0x01;
  13. }
  14. SPI_CLK = 0;
  15. //SPI_DLY_us(1);
  16. }
  17. return in;
  18. }

4、写字节函数


  
  1. void SPI_SendByte(uint8 cmd)
  2. {
  3. unsigned char i=8, temp=0;
  4. //SPI_CS=0;
  5. for(i=0;i<8;i++){
  6. SPI_CLK=0;
  7. temp = cmd&0x80;
  8. if (temp == 0)
  9. {
  10. SPI_MOSI = 0;
  11. }
  12. else
  13. {
  14. SPI_MOSI = 1;
  15. }
  16. cmd<<=1;;
  17. SPI_CLK=1;
  18. //SPI_DLY_us(1);
  19. }
  20. SPI_MOSI=1;
  21. }

5、读数据


  
  1. unsigned char ReadRawRC(unsigned char Address)
  2. {
  3. unsigned char ucAddr, ucResult=0;
  4. SPI_CS=0;
  5. ucAddr = ((Address<<1)&0x7E)|0x80;
  6. SPI_SendByte(ucAddr);
  7. ucResult = SPI_ReadByte();
  8. SPI_CS = 1;
  9. return ucResult;
  10. }

6、写数据


  
  1. void WriteRawRC(unsigned char Address, unsigned char value)
  2. {
  3. unsigned char ucAddr;
  4. SPI_CS=0;
  5. ucAddr = ((Address<<1)&0x7E);
  6. SPI_SendByte(ucAddr);
  7. SPI_SendByte(value);
  8. SPI_CS = 1;
  9. }

 

 

 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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