该协议基于在同一块MSP430上用串口1发射,串口0接收,使用两块无线收发的NRF401模块。
初始化串口0,用于接收
void init_UART0(void)
{
UCTL0 &= ~SWRST;
UCTL0 |=CHAR;//0X10;
UBR00 = 0x03;
UBR10 = 0x00;
UMCTL0 = 0x4A;
UTCTL0 = SSEL0;//0X10;
ME1 |= UTXE0+URXE0 ;
//enable the UART0
IE1 |=URXIE0;
P3SEL|=BIT4+BIT5;
P3DIR|=BIT4;
Clinet_Receive;
}
初始化串口1,用于发送
void init_UART1()
{
UCTL1 &= ~SWRST;
UCTL1 |=CHAR;//0X10;
UBR01 = 0x03;
UBR11 = 0x00;
UMCTL1 = 0x4A;
UTCTL1 = SSEL0; //
ME2 |= URXE1+UTXE1 ; //enable the UART1
IE2 |=URXIE1;
P3SEL|=BIT6+BIT7;
P3DIR|=BIT6+BIT7;
Host_Transmit;
}
初始化NRF401发射模块
void init_NRF401_TR(void)
{
Host_PowerUp;
//上电到发射状态避免辐射和干扰
NRF401_CS;
delayms(5);
Host_Transmit;
//设置串口无线模块为发射模式
delayms(1);
//延时4毫秒}
初始化NRF401接收模块
void init_NRF401_RE(void)
{
Host_PowerUp;
//上电到发射状态避免辐射和干扰
NRF401_CS;
Host_Receive;
//设置串口无线模块为发射模式
delayms(5);
//延时4毫秒}
发射模块发送数据
__monitor
void
uart_H2C(unsigned char id,unsigned char cmd)
//Host to Host transmit mode{
unsigned int crc=0;
unsigned char uart_Host_Tbuf[UART_BUF_SIZE];
//发送缓冲区
pro[0]=id;
pro[1]=cmd;
crc=cal_crc(pro,2);
//计算校验码
uart_Host_Tbuf[0]=0x11;
//先导字段,容易丢失
uart_Host_Tbuf[1]=0x55;
//抗干扰字节
uart_Host_Tbuf[2]=0xAA;
//帧开始字节
uart_Host_Tbuf[3]=id;
uart_Host_Tbuf[4]=cmd;
uart_Host_Tbuf[5]=(char)(crc/256);