如图求大神解释下方框部分,这是CC1101收发程序部分,为什么是Txbuf[1]=0x11?

如图求大神解释下方框部分,这是CC1101收发程序部分,为什么是Txbuf[1]=0x11?,第1张

单片机型号:STM8S003,CC1101。

如下为CC1101的IO口配置:

GPIO_Init(GPIOD,(GPIO_PIN_6),GPIO_MODE_OUT_PP_LOW_FAST ) //发送灯指示

GPIO_Init(GPIOD,(GPIO_PIN_4),GPIO_MODE_OUT_PP_LOW_FAST ) //CC1100_csn

GPIO_Init(GPIOC,(GPIO_PIN_5),GPIO_MODE_OUT_PP_LOW_FAST ) //cc1100_sck

GPIO_Init(GPIOC,(GPIO_PIN_6),GPIO_MODE_OUT_PP_LOW_FAST ) //cc1100_si

GPIO_Init(GPIOC,(GPIO_PIN_7),GPIO_MODE_IN_PU_NO_IT ) //CC1100_SO

GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT)//GOD0可以设置成浮空输入,保证CC1101掉电模式的低功耗

GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT)//GOD2

如下为单片机的SPI配置:

如下为CC1101的各个函数:*******************************************************************************

函数功能:SPI写命令

*******************************************************************************/

void halSpiStrobe(u8 strobe)

{

CSN_L

while (Read_MISO())

SPI_SendData(strobe) //写入命令

while (!(SPI->SR&0x02))

CSN_H

}

/*******************************************************************************

函数功能:写寄存器

*******************************************************************************/

void halRfWriteReg(u8 addr, u8 value)

{

CSN_L

while (Read_MISO())

SPI_SendData(addr)

while (!(SPI->SR&0x02))

SPI_SendData(value)

while (!(SPI->SR&0x02))

CSN_H

}

/*******************************************************************************

函数功能:SPI连续写配置寄存器

*******************************************************************************/

void halSpiWriteBurstReg(u8 addr, u8 *buffer, u8 count)

{

u8 i, temp

temp = addr | WRITE_BURST

CSN_L

while (Read_MISO())

SPI_SendData(temp)

while (!(SPI->SR&0x02)) //等待缓存区为空

for (i = 0i <counti++)

{

SPI_SendData(buffer)

while (!(SPI->SR&0x02)) //等待缓存区为空

}

CSN_H

}

拉低CSN,然后MISO返回一个低电平,说明复位成功。继续往下执行。如果不能返回,就是芯片有问题了。参见文档:When the CC1101 reset is completed, the chip will be in the IDLE state and the crystaloscillator will be running. If the chip has had sufficient time for the crystal oscillator tostabilize after the power-on-reset, the SO pin will go low immediately after taking CSn low. IfCSn is taken low before reset is completed,the SO pin will first go high, indicating that thecrystal oscillator is not stabilized, before going low as shown in Figure 23.

CC1101 是一款低于1GHz设计旨在用于极低功耗RF应用。其主要针对工业、科研和医疗(ISM)以及短距离无线通信设备(SRD)。CC1101可提供对数据包处理、数据缓冲、突发传输、接收信号强度指示(RSSI)、空闲信道评估(CCA)、链路质量指示以及无线唤醒(WOR)的广泛硬件支持。CC1101在代码、封装和外引脚方面均与CC1100兼容,可用于全球最为常用的开放式低于1GHz频率的RF设计。

● 超低功耗无线收发器

● 家庭和楼宇自动化

● 高级抄表架构(AMI)

● 无线报警安全系统

◆ 387.0MHz~464.0MHz工作频段。

(433MHz,0.6kbps,1%误码率时为-116dBm)。

(接收模式,433MHz,1.2kbps时仅16.0mA)。

◆ 最高可设置为+10dBm的发射功率。

◆ 支持0.6kbps~500kbps的数据传输速率。

◆ 支持多种调制模式(OOK、ASK、GFSK、2-FSK、4-FSK和MSK)。

◆ 提供对同步字检测、地址校验、灵活的数据包长度以及自动CRC处理的支持。

◆ 支持RSSI(接收信号强度指示)和LQI(链路质量指示)。

◆ 通过4线SPI接口与MCU连接,同时提供2个可设定功能的通用数字输出引脚。

◆ 独立的64字节RXFIFO和TX FIFO。

◆ 工作电压范围:1.9V~3.6V,待机模式下电流仅为200nA。

◆ 工作温度范围:-40℃~+85℃


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7844158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存