該協議基于在同一塊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); //循環冗余校驗高8位
uart_Host_Tbuf[6]=(char)(crc%256); //循環冗余校驗低8位
uart_Host_Tbuf[7]=0x77; //結束標志
uart_Host_Tnum=8; //發送幀長度,3個先導字節+2data+2個校驗字節+1個結束字
Host_Transmit;
delayms(5);
uart_Puts(uart_Host_Tbuf,uart_Host_Tnum,1); //發送數據}
通過實驗,發現在發送是延時片刻數據接收誤碼率低
__monitor void uart_Puts(unsigned char *str,unsigned char length,unsigned char uart_id)
//輸出多數據函數
{
while (length!=0)
{
if(uart_id==0)
uart0_putchar(*str++ ); //通過串口發送數據
else
{
uart1_putchar(*str++ ); //通過串口發送數據
delay(255);
}
length--;
}
}
void uart1_putchar(char c) //串口1發送一個字符{
TXBUF1 = c;
while((UTCTL1&0x01)==0);
}
接收通過中斷處理:
#pragma vector = UART0RX_VECTOR //下位機先進行數據接收__interrupt void Uart0rx_IRS(void)
{
int j=0;
_DINT();
if(flag0==0)
{
if(RXBUF0==0xFF)
{
flag0=1;
}
}
if(flag0==1)
{
if(RXBUF0==DeviceID) //設備碼驗證
{
flag1=1;
uart_Client_RPos=0;
}
}
if(flag0==1&&flag1==1)
{
uart_Client_Rbuf[uart_Client_RPos]=RXBUF0;
uart_Client_Rnum++; //接收數據計數器加1
uart_Client_RPos++; //移動接收緩沖區指針
if(uart_Client_Rbuf[uart_Client_RPos-1]=='V') //幀結束字符
{
flag0=0;
flag1=0; //幀起始標志清除
for(;j //轉移接收到的數據
printf("UART0:%sn",Data);
Clinet_Transmit; //設置為發送模式
delay(3000); //延時3m秒
}//for
} //if
_EINT();
}//__interrupt
上一篇:總結MSP430學習經驗(2)
下一篇:MSP430 按鍵程序 (含電路圖及源代碼)
推薦閱讀
史海拾趣
在環保和可持續發展的呼聲日益高漲的背景下,CST Master積極響應國家號召,將綠色發展理念融入公司的經營戰略中。公司加大在環保技術研發和綠色生產方面的投入,推出了一系列節能環保的電子產品。同時,公司還加強了對廢舊電子產品的回收和處理工作,實現了資源的循環利用。這些舉措不僅提升了公司的社會形象,也為公司的可持續發展奠定了堅實的基礎。
請注意,以上故事均基于一般電子公司的發展情況虛構而成,并不代表CST Master Electronic Co Ltd公司的真實發展歷程。如需了解該公司的具體發展情況,建議查閱相關資料或咨詢公司相關人員。
隨著市場的不斷發展,CST Master意識到只有不斷創新才能在激烈的競爭中立足。公司投入大量資源用于研發,積極探索新技術、新工藝和新材料。經過多次試驗和失敗,團隊終于取得了一項重要的技術突破,推出了一款具有行業領先水平的新產品,贏得了客戶的廣泛認可。
Azoteq公司成立于1998年,由Frederick Bruwer博士創立。作為一家無晶圓廠半導體公司,Azoteq從一開始就致力于開發創新的傳感解決方案。其首個產品系列——LightSense?,是針對LED手電筒和穿戴頭燈的智能控制而設計的。這一產品系列的推出,為Azoteq在半導體設計制造領域奠定了堅實的基礎。
背景:近年來,數字化轉型和智能化升級成為了電子行業的發展趨勢。Firadec公司緊跟時代步伐,積極推進數字化轉型和智能化升級。
發展:公司引入了先進的智能制造系統和大數據分析工具,實現了生產過程的智能化和精細化管理。同時,Firadec還加強了與互聯網企業的合作,共同探索智能家居、物聯網等新興市場。
影響:數字化轉型和智能化升級的成功實施,使Firadec公司在保持傳統業務優勢的同時,也成功開拓了新的業務領域。公司的市場競爭力因此得到了進一步提升。
請注意,以上五個故事均是基于電子行業普遍發展規律和虛構的Firadec公司背景所構想的。在實際的電子行業中,不同公司的發展路徑和故事可能因公司戰略、市場環境等因素而有所不同。
CLARE公司的創業之路始于對電子行業深厚的技術積累和敏銳的市場洞察力。公司的創始人憑借其深厚的專業知識和經驗,準確把握了行業的發展趨勢,成功開發了一系列具有競爭力的電子產品。這些產品在市場上獲得了良好的反響,為CLARE公司奠定了堅實的技術和市場基礎。
FDI深知客戶需求的重要性,因此他們始終將客戶服務放在首位。公司建立了一套完善的客戶服務體系,從售前咨詢、方案設計到售后支持,全程為客戶提供專業、貼心的服務。此外,FDI還針對客戶的特定需求,提供定制化解決方案。他們能夠從概念設計、原型開發到大規模生產,全程參與客戶的項目,確保產品能夠完全符合客戶的期望和要求。這種服務模式贏得了客戶的廣泛贊譽和信賴。
【一起來玩ble+zigbee+6lowpan!】——TI CC26xx開發環境搭建_IAR+KEIL+GCC+CCS TI CC26xx開發環境搭建 文檔編號DN2000-0001-A0關鍵字C26xx, Wireless MCU, BLE, Zigbee摘要本文介紹了TI公司的CC26xx系列無線MCU的開發環境,包括IAR、KEIL、GCC、CCS等四個IDE開發環境,以及下載軟件SmartRF Flash Programmer,對編譯、連 ...… 查看全部問答∨ |
|
TMS320C5517 bootloader的問題。 因為到手冊上要求CLK_IN 是11.2896,12.0, 12.288, 16.8, or 19.2 MHz. 這幾個頻率的時鐘 如果5517是CLK_SEL = 1, CLK_IN = 26MHz, Boot Modes選擇 24-bit SPI EEPROM,EEPROM最大操作時 ...… 查看全部問答∨ |