标题:
LPC824+CC1101无线转485和232源程序
[打印本页]
作者:
lfywl
时间:
2019-8-21 14:27
标题:
LPC824+CC1101无线转485和232源程序
void halRfWriteRfSettings(void)
{
CC1101_Write_Reg(CC1101_FSCTRL0, rfSettings.FSCTRL2); //自已加的
// Write register settings
CC1101_Write_Reg(CC1101_FSCTRL1, rfSettings.FSCTRL1);
CC1101_Write_Reg(CC1101_FSCTRL0, rfSettings.FSCTRL0);
CC1101_Write_Reg(CC1101_FREQ2, rfSettings.FREQ2);
CC1101_Write_Reg(CC1101_FREQ1, rfSettings.FREQ1);
CC1101_Write_Reg(CC1101_FREQ0, rfSettings.FREQ0);
CC1101_Write_Reg(CC1101_SYNC1, 0x2D);
CC1101_Write_Reg(CC1101_SYNC0, 0xD4);
CC1101_Write_Reg(CC1101_MDMCFG4, rfSettings.MDMCFG4);
CC1101_Write_Reg(CC1101_MDMCFG3, rfSettings.MDMCFG3);
CC1101_Write_Reg(CC1101_MDMCFG2, rfSettings.MDMCFG2);
CC1101_Write_Reg(CC1101_MDMCFG1, rfSettings.MDMCFG1);
CC1101_Write_Reg(CC1101_MDMCFG0, rfSettings.MDMCFG0);
CC1101_Write_Reg(CC1101_CHANNR, rfSettings.CHANNR);
CC1101_Write_Reg(CC1101_DEVIATN, rfSettings.DEVIATN);
CC1101_Write_Reg(CC1101_FREND1, rfSettings.FREND1);
CC1101_Write_Reg(CC1101_FREND0, rfSettings.FREND0);
CC1101_Write_Reg(CC1101_MCSM0 , rfSettings.MCSM0 );
CC1101_Write_Reg(CC1101_FOCCFG, rfSettings.FOCCFG);
CC1101_Write_Reg(CC1101_BSCFG, rfSettings.BSCFG);
CC1101_Write_Reg(CC1101_AGCCTRL2, rfSettings.AGCCTRL2);
CC1101_Write_Reg(CC1101_AGCCTRL1, rfSettings.AGCCTRL1);
CC1101_Write_Reg(CC1101_AGCCTRL0, rfSettings.AGCCTRL0);
CC1101_Write_Reg(CC1101_FSCAL3, rfSettings.FSCAL3);
CC1101_Write_Reg(CC1101_FSCAL2, rfSettings.FSCAL2);
CC1101_Write_Reg(CC1101_FSCAL1, rfSettings.FSCAL1);
CC1101_Write_Reg(CC1101_FSCAL0, rfSettings.FSCAL0);
CC1101_Write_Reg(CC1101_FSTEST, rfSettings.FSTEST);
CC1101_Write_Reg(CC1101_TEST2, rfSettings.TEST2);
CC1101_Write_Reg(CC1101_TEST1, rfSettings.TEST1);
CC1101_Write_Reg(CC1101_TEST0, rfSettings.TEST0);
CC1101_Write_Reg(CC1101_IOCFG2, rfSettings.IOCFG2);
CC1101_Write_Reg(CC1101_TEST2, rfSettings.TEST2);
CC1101_Write_Reg(CC1101_TEST1, rfSettings.TEST1);
CC1101_Write_Reg(CC1101_TEST0, rfSettings.TEST0);
CC1101_Write_Reg(CC1101_IOCFG2, rfSettings.IOCFG2);
CC1101_Write_Reg(CC1101_IOCFG0, rfSettings.IOCFG0);
CC1101_Write_Reg(CC1101_PKTCTRL1, rfSettings.PKTCTRL1);
CC1101_Write_Reg(CC1101_PKTCTRL0, rfSettings.PKTCTRL0);
CC1101_Write_Reg(CC1101_ADDR, rfSettings.ADDR);
CC1101_Write_Reg(CC1101_PKTLEN, rfSettings.PKTLEN);
CC1101_Write_Reg(CC1101_FIFOTHR, 0x41);
}
//*******************************************************************************
//函数名:void RESET_CC1100(void)
//输入:无
//输出:无
//功能描述:复位CC1100
//*****************************************************************************************
uint8_t ResetCC1100(void)
{
uint8_t Reset=0;
CC1101_SET_CSN_LOW( );
drv_delay_us(100);
Reset=DelayMiso();
CC1101_Write_Cmd( CC1101_SRES ); //写入复位命令
Reset+=DelayMiso();
CC1101_SET_CSN_HIGH( );
return Reset;
}
//*****************************************************************************************
//函数名:void POWER_UP_RESET_CC1100(void)
//输入:无
//输出:无
//功能描述:上电复位CC1100
//*****************************************************************************************
bool UpPowerResetCC1100(void)
{
uint8_t loop=5;
while(loop--)
{
CC1101_SET_CSN_HIGH( );
drv_delay_us(500);
CC1101_SET_CSN_LOW( );
drv_delay_us(500);
CC1101_SET_CSN_HIGH( );
drv_delay_us(5000);
if(ResetCC1100()==0)
return (true);
}
return (false);
}
/**
* @brief :CC1101初始化
* @param :无
* @note :无
* @retval:无
*/
void CC1101_Init( void )
{
CC1101_Gpio_Init();
if(UpPowerResetCC1100())
{
halRfWriteRfSettings();
CC1101_Write_Multi_Reg( CC1101_PATABLE, (uint8_t*)PaTabel_Max, 8 );
CC1101_Write_Cmd( CC1101_SIDLE );
CC1101_Write_Cmd( CC1101_SFRX );
CC1101_Write_Cmd( CC1101_SFTX );
}
else
Chip_UART_SendBlocking(LPC_USART0, "init_error", 10);
}
int main(void)
{
SystemCoreClockUpdate();
Board_Init();
/* Setup UART */
Chip_UART_Init(LPC_USART0);
Chip_UART_ConfigData(LPC_USART0, UART_CFG_DATALEN_8 | UART_CFG_PARITY_NONE | UART_CFG_STOPLEN_1);
Chip_Clock_SetUSARTNBaseClockRate((9600 * 16), true);
Chip_UART_SetBaud(LPC_USART0, 9600);
Chip_UART_Enable(LPC_USART0);
Chip_UART_TXEnable(LPC_USART0);
// Enable receive data and line status interrupt
Chip_UART_IntEnable(LPC_USART0, UART_INTEN_RXRDY);
Chip_UART_IntDisable(LPC_USART0, UART_INTEN_TXRDY); // May not be needed
/* preemption = 1, sub-priority = 1 */
NVIC_EnableIRQ(UART0_IRQn);
/* Setup UART1 */
Chip_UART_Init(LPC_USART1);
Chip_UART_ConfigData(LPC_USART1, UART_CFG_DATALEN_8 | UART_CFG_PARITY_NONE | UART_CFG_STOPLEN_1);
Chip_Clock_SetUSARTNBaseClockRate((9600 * 16), true);
Chip_UART_SetBaud(LPC_USART1, 9600);
Chip_UART_Enable(LPC_USART1);
Chip_UART_TXEnable(LPC_USART1);
/* Enable receive data and line status interrupt */
Chip_UART_IntEnable(LPC_USART1, UART_INTEN_RXRDY);
Chip_UART_IntDisable(LPC_USART1, UART_INTEN_TXRDY); /* May not be needed */
/* preemption = 1, sub-priority = 1 */
NVIC_EnableIRQ(UART1_IRQn);
/* Initial message sent using blocking method to prevent ring buffer overflow */
Chip_UART_SendBlocking(LPC_USART0, inst1, sizeof(inst1) - 1);
Chip_UART_SendBlocking(LPC_USART1, inst1, sizeof(inst1) - 1);
/* MRT Initialization and disable all timers */
Chip_MRT_Init();
Chip_MRT_SetEnabled(Chip_MRT_GetRegPtr(0));
Chip_MRT_SetEnabled(Chip_MRT_GetRegPtr(1));
/* Enable the interrupt for the MRT */
NVIC_EnableIRQ(MRT_IRQn);
drv_spi_init();
CC1101_Init();
while (1)
{
uint8_t i=0;
CC1101_Clear_TxBuffer( );
CC1101_Set_Mode( CC1101_SRX );
CC1101_Rx_Packet( Txbuffer );
while(i<=0xA4)
{
if((Txbuffer[i] == 0xA4)&&(i+8<0xA4))
{
Chip_UART_SendBlocking(LPC_USART0, &Txbuffer[i],8);
Chip_UART_SendBlocking(LPC_USART1, &Txbuffer[i],8);
i+=8;
}
else
i++;
}
Txleng= 0;
}
}
复制代码
LPC824+CC1101.7z
2019-8-21 17:29 上传
点击文件名下载附件
下载积分: 黑币 -5
264.69 KB, 下载次数: 12, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1