weixin_47013510 2021-07-07 16:18 采纳率: 0%
浏览 61

怎样使cc1101具备收发一体功能

硬件:stm8l101x3 + cc1101

目标:实现收发一体的功能

问题:想让CC1101具备收发一体的功能,但是只能接收到信息,发送时不能主动发送信息只能在接受到信息后发送单个字符,有没有大神知道下面代码哪里出问题了

-代码
main.c

#include "main.h ////main.h 中含有TX/RX、软件SPI/硬件SPI选择配置选项

uint8_t g_UartRxBuffer[ 100 ] = { 0 };
uint8_t g_RF24L01RxBuffer[ 32 ] = { 0 };

int main( void )
{
uint8_t i = 0;
uint8_t q = 0;

//串口初始化
drv_uart_init( 9600 );

//LED初始化
drv_led_init( );

//SPI初始化
drv_spi_init( );

//CC1101初始化
CC1101_Init( );
for( i = 0; i < 6; i++ )
{
    led_red_flashing( );
    led_green_flashing( );
    drv_delay_ms( 500 );
}

while( 1 )
{

    CC1101_Clear_RxBuffer( );   //清空接收缓冲区
    CC1101_Set_Mode( RX_MODE );  
    i = CC1101_Rx_Packet( g_RF24L01RxBuffer );        //接收字节
    if( 0 != i )
    {
        led_green_flashing( );
        drv_uart_tx_bytes( g_RF24L01RxBuffer, i );    //输出接收到的字节
         i = 0;
    }
    q = drv_uart_rx_bytes( g_UartRxBuffer );     //串口接收数据
    //CC1101_Set_Mode( TX_MODE );
        if( 0 != q )
        {
        
            CC1101_Tx_Packet( g_UartRxBuffer, 3 , ADDRESS_CHECK );    //发送数据包
            drv_delay_ms( 1000 );    
            led_red_flashing( );
           q = 0;
        }        
}    

}

  • 写回答

1条回答 默认 最新

  • Ak混子 2023-05-29 16:42
    关注

    帮你改了一下

    #include "main.h"
    
    uint8_t g_UartRxBuffer[100] = {0};
    uint8_t g_RF24L01RxBuffer[32] = {0};
    
    int main(void)
    {
        uint8_t i = 0;
        uint8_t q = 0;
    
        // 串口初始化
        drv_uart_init(9600);
    
        // LED初始化
        drv_led_init();
    
        // SPI初始化
        drv_spi_init();
    
        // CC1101初始化
        CC1101_Init();
    
        for (i = 0; i < 6; i++)
        {
            led_red_flashing();
            led_green_flashing();
            drv_delay_ms(500);
        }
    
        while (1)
        {
            CC1101_Clear_RxBuffer(); // 清空接收缓冲区
            CC1101_Set_Mode(RX_MODE);
            i = CC1101_Rx_Packet(g_RF24L01RxBuffer); // 接收字节
    
            if (i != 0)
            {
                led_green_flashing();
                drv_uart_tx_bytes(g_RF24L01RxBuffer, i); // 输出接收到的字节
                i = 0;
            }
    
            q = drv_uart_rx_bytes(g_UartRxBuffer); // 串口接收数据
    
            if (q != 0)
            {
                CC1101_Set_Mode(TX_MODE);
                CC1101_Tx_Packet(g_UartRxBuffer, q, ADDRESS_CHECK); // 发送数据包
                drv_delay_ms(1000);
                led_red_flashing();
                q = 0;
            }
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块