找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2133|回复: 0
收起左侧

LPC824+CC1101无线转485和232源程序

[复制链接]
ID:577139 发表于 2019-8-21 14:27 | 显示全部楼层 |阅读模式
  1. void halRfWriteRfSettings(void)
  2. {
  3.     CC1101_Write_Reg(CC1101_FSCTRL0, rfSettings.FSCTRL2); //自已加的
  4.     // Write register settings
  5.     CC1101_Write_Reg(CC1101_FSCTRL1, rfSettings.FSCTRL1);
  6.     CC1101_Write_Reg(CC1101_FSCTRL0, rfSettings.FSCTRL0);
  7.     CC1101_Write_Reg(CC1101_FREQ2, rfSettings.FREQ2);
  8.     CC1101_Write_Reg(CC1101_FREQ1, rfSettings.FREQ1);
  9.     CC1101_Write_Reg(CC1101_FREQ0, rfSettings.FREQ0);
  10.     CC1101_Write_Reg(CC1101_SYNC1, 0x2D);
  11.     CC1101_Write_Reg(CC1101_SYNC0, 0xD4);
  12.     CC1101_Write_Reg(CC1101_MDMCFG4, rfSettings.MDMCFG4);
  13.     CC1101_Write_Reg(CC1101_MDMCFG3, rfSettings.MDMCFG3);
  14.     CC1101_Write_Reg(CC1101_MDMCFG2, rfSettings.MDMCFG2);
  15.     CC1101_Write_Reg(CC1101_MDMCFG1, rfSettings.MDMCFG1);
  16.     CC1101_Write_Reg(CC1101_MDMCFG0, rfSettings.MDMCFG0);
  17.     CC1101_Write_Reg(CC1101_CHANNR, rfSettings.CHANNR);
  18.     CC1101_Write_Reg(CC1101_DEVIATN, rfSettings.DEVIATN);
  19.     CC1101_Write_Reg(CC1101_FREND1, rfSettings.FREND1);
  20.     CC1101_Write_Reg(CC1101_FREND0, rfSettings.FREND0);
  21.     CC1101_Write_Reg(CC1101_MCSM0 , rfSettings.MCSM0 );
  22.     CC1101_Write_Reg(CC1101_FOCCFG, rfSettings.FOCCFG);
  23.     CC1101_Write_Reg(CC1101_BSCFG, rfSettings.BSCFG);
  24.     CC1101_Write_Reg(CC1101_AGCCTRL2, rfSettings.AGCCTRL2);
  25.     CC1101_Write_Reg(CC1101_AGCCTRL1, rfSettings.AGCCTRL1);
  26.     CC1101_Write_Reg(CC1101_AGCCTRL0, rfSettings.AGCCTRL0);
  27.     CC1101_Write_Reg(CC1101_FSCAL3, rfSettings.FSCAL3);
  28.     CC1101_Write_Reg(CC1101_FSCAL2, rfSettings.FSCAL2);
  29.     CC1101_Write_Reg(CC1101_FSCAL1, rfSettings.FSCAL1);
  30.     CC1101_Write_Reg(CC1101_FSCAL0, rfSettings.FSCAL0);
  31.     CC1101_Write_Reg(CC1101_FSTEST, rfSettings.FSTEST);
  32.     CC1101_Write_Reg(CC1101_TEST2, rfSettings.TEST2);
  33.     CC1101_Write_Reg(CC1101_TEST1, rfSettings.TEST1);
  34.     CC1101_Write_Reg(CC1101_TEST0, rfSettings.TEST0);
  35.     CC1101_Write_Reg(CC1101_IOCFG2, rfSettings.IOCFG2);
  36.                 CC1101_Write_Reg(CC1101_TEST2, rfSettings.TEST2);
  37.     CC1101_Write_Reg(CC1101_TEST1, rfSettings.TEST1);
  38.     CC1101_Write_Reg(CC1101_TEST0, rfSettings.TEST0);
  39.     CC1101_Write_Reg(CC1101_IOCFG2, rfSettings.IOCFG2);
  40.     CC1101_Write_Reg(CC1101_IOCFG0, rfSettings.IOCFG0);
  41.     CC1101_Write_Reg(CC1101_PKTCTRL1, rfSettings.PKTCTRL1);
  42.     CC1101_Write_Reg(CC1101_PKTCTRL0, rfSettings.PKTCTRL0);
  43.     CC1101_Write_Reg(CC1101_ADDR, rfSettings.ADDR);
  44.     CC1101_Write_Reg(CC1101_PKTLEN, rfSettings.PKTLEN);
  45.     CC1101_Write_Reg(CC1101_FIFOTHR, 0x41);
  46.         }
  47. //*******************************************************************************
  48. //函数名:void RESET_CC1100(void)
  49. //输入:无
  50. //输出:无
  51. //功能描述:复位CC1100
  52. //*****************************************************************************************
  53. uint8_t ResetCC1100(void)
  54. {
  55.     uint8_t Reset=0;
  56.         
  57.           CC1101_SET_CSN_LOW( );
  58.           drv_delay_us(100);
  59.         
  60.     Reset=DelayMiso();
  61.     CC1101_Write_Cmd( CC1101_SRES );   //写入复位命令
  62.     Reset+=DelayMiso();
  63.         
  64.     CC1101_SET_CSN_HIGH( );
  65.     return Reset;
  66. }

  67. //*****************************************************************************************
  68. //函数名:void POWER_UP_RESET_CC1100(void)
  69. //输入:无
  70. //输出:无
  71. //功能描述:上电复位CC1100
  72. //*****************************************************************************************
  73. bool UpPowerResetCC1100(void)
  74. {
  75.     uint8_t loop=5;
  76.     while(loop--)
  77.     {
  78.         CC1101_SET_CSN_HIGH( );
  79.         drv_delay_us(500);
  80.         CC1101_SET_CSN_LOW( );
  81.         drv_delay_us(500);
  82.         CC1101_SET_CSN_HIGH( );
  83.         drv_delay_us(5000);
  84.         if(ResetCC1100()==0)
  85.             return (true);
  86.     }
  87.     return (false);
  88. }               

  89. /**
  90.   * @brief :CC1101初始化
  91.   * @param :无
  92.   * @note  :无
  93.   * @retval:无
  94.   */
  95. void CC1101_Init( void )
  96. {
  97.         CC1101_Gpio_Init();
  98.         if(UpPowerResetCC1100())
  99.         {
  100.           halRfWriteRfSettings();
  101.           CC1101_Write_Multi_Reg( CC1101_PATABLE, (uint8_t*)PaTabel_Max, 8 );
  102.                 CC1101_Write_Cmd( CC1101_SIDLE );
  103.                 CC1101_Write_Cmd( CC1101_SFRX );
  104.                 CC1101_Write_Cmd( CC1101_SFTX );
  105.         }               
  106.   else
  107.                 Chip_UART_SendBlocking(LPC_USART0, "init_error", 10);
  108. }


  109. int main(void)
  110. {

  111.         SystemCoreClockUpdate();
  112.         
  113.         Board_Init();

  114.         /* Setup UART */
  115.         Chip_UART_Init(LPC_USART0);
  116.         Chip_UART_ConfigData(LPC_USART0, UART_CFG_DATALEN_8 | UART_CFG_PARITY_NONE | UART_CFG_STOPLEN_1);
  117.         Chip_Clock_SetUSARTNBaseClockRate((9600 * 16), true);
  118.         Chip_UART_SetBaud(LPC_USART0, 9600);
  119.         Chip_UART_Enable(LPC_USART0);
  120.         Chip_UART_TXEnable(LPC_USART0);

  121.         // Enable receive data and line status interrupt
  122.         Chip_UART_IntEnable(LPC_USART0, UART_INTEN_RXRDY);
  123.         Chip_UART_IntDisable(LPC_USART0, UART_INTEN_TXRDY);        // May not be needed

  124.         /* preemption = 1, sub-priority = 1 */
  125.         NVIC_EnableIRQ(UART0_IRQn);
  126.         
  127.                 /* Setup UART1 */
  128.         Chip_UART_Init(LPC_USART1);
  129.         Chip_UART_ConfigData(LPC_USART1, UART_CFG_DATALEN_8 | UART_CFG_PARITY_NONE | UART_CFG_STOPLEN_1);
  130.         Chip_Clock_SetUSARTNBaseClockRate((9600 * 16), true);
  131.         Chip_UART_SetBaud(LPC_USART1, 9600);
  132.         Chip_UART_Enable(LPC_USART1);
  133.         Chip_UART_TXEnable(LPC_USART1);

  134.         /* Enable receive data and line status interrupt */
  135.         Chip_UART_IntEnable(LPC_USART1, UART_INTEN_RXRDY);
  136.         Chip_UART_IntDisable(LPC_USART1, UART_INTEN_TXRDY);        /* May not be needed */

  137.         /* preemption = 1, sub-priority = 1 */
  138.         NVIC_EnableIRQ(UART1_IRQn);

  139.         /* Initial message sent using blocking method to prevent ring buffer overflow */
  140.         Chip_UART_SendBlocking(LPC_USART0, inst1, sizeof(inst1) - 1);
  141.         Chip_UART_SendBlocking(LPC_USART1, inst1, sizeof(inst1) - 1);

  142.         
  143.         /* MRT Initialization and disable all timers */
  144.         Chip_MRT_Init();        
  145.   Chip_MRT_SetEnabled(Chip_MRT_GetRegPtr(0));
  146.         Chip_MRT_SetEnabled(Chip_MRT_GetRegPtr(1));
  147.         
  148.         /* Enable the interrupt for the MRT */
  149.         NVIC_EnableIRQ(MRT_IRQn);
  150.         
  151.         drv_spi_init();
  152.         CC1101_Init();
  153. while (1)
  154.         {
  155.                         uint8_t i=0;
  156.                   CC1101_Clear_TxBuffer( );
  157.                         CC1101_Set_Mode( CC1101_SRX );
  158.             CC1101_Rx_Packet( Txbuffer );
  159.                         while(i<=0xA4)
  160.                         {
  161.                                 if((Txbuffer[i] == 0xA4)&&(i+8<0xA4))
  162.                                 {
  163.                                         Chip_UART_SendBlocking(LPC_USART0, &Txbuffer[i],8);
  164.                                         Chip_UART_SendBlocking(LPC_USART1, &Txbuffer[i],8);
  165.                                         i+=8;
  166.                                 }
  167.                                 else
  168.                                         i++;
  169.                         }
  170.                         Txleng= 0;
  171.         }               
  172. }
复制代码

LPC824+CC1101.7z

264.69 KB, 下载次数: 11, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表