1.首先先介紹一下USCI模塊
通用串行通信接口(USCI)模塊支持多種異步通信模式。不同的 USCI 模塊支持不同的模式。
每一個 USCI 模塊以不同的字母命名。例如,USCI_A 不同于 USCI_B 等等。如果不止一個相同的USCI 模塊被安裝在一個設備上,這些模塊以不同的數字命名。例如,一個設備有兩個 USCI_A模塊,它們可以命名 USCI_A0 和 USCI_A1。參見設備明細表去確定各種 USCI 模塊,如果需要,它們可以安放在任何設備上。
USCI_Ax 模塊支持:
UART 模式
脈沖調整的 IRDA 通信
自動波特率檢測的 LIN 通信
SPI 模式
USCI_Bx 模塊支持:
I2C 模式
SPI 模式
2. USCI介紹:UART
在異步模式中,USCI_Ax 模塊是通過兩個外部引腳連接 MSP430 到外部系統,分別是 UCAXRXD和 UCAXTXD。當 UCSYNC位被清零時 UART 模式被選擇。
在 UART 模式下,USCI 的發送和接收字符每次一位的異步速率到另一個設備。字符傳輸的
時間取決于 USCI 的波特率選擇。傳輸和接收功能使用相同的波特率。
3 . USCI 初始化和復位
USCI 在 PUC 后或者通過設置 UCSWRST 位。在 PUC 后,UCSWRST 位自動置位,保持 USCI 在復位狀態。當置位時,UCSWRST 位復位 UCAXRXIE,UCAXTXIE,UCAXRXIFG,UCRXERR,UCBRK,UCPE,UCOE,UCFE,UCSTOE 和 UCBTOE 位并置 UCAXTXIFG 位。清除 UCSWRST 位釋放 UCSI 的操作。
注解:初始化或者從新配置 USCI 模塊
相應的 USCI 初始化/重配置的過程如下:
設置 UCSWRST
UCSWRST=1 時初始化所有的 UCSI 寄存器(包括 UCAXCTL1)
配置端口
軟件清除 UCSWRST
通過 UCAXRXIE 和/或 UCAXTXIE 允許中斷(可選)
由于硬件原理圖為
/*************************************************
函數名:USCI_A1_UART_init
函數功能:初始化串口
函數參數:無
函數返回值:無
說明:p4.4為TX_485 p4.5為RX_485
*************************************************/
//初始化串口A1
void USCI_A1_UART_init(void)
{
DRE485_out;
P4SEL |= BIT4 + BIT5; //p4.4為TX_485 p4.5為RX_485
UCA1CTL1 |= UCSWRST; //reset復位
UCA1CTL1 |= UCSSEL__ACLK; // CLK = ACLK 驅動時鐘選擇ACLK
UCA1BR0 = baud_l; //波特率為9600bps
UCA1BR1 = baud_h;
UCA1MCTL = UCBRS_3+UCBRF_0; //微調寄存器
UCA1IFG &= ~UCRXIFG; //RX中斷未決
UCA1CTL1 &= ~UCSWRST; //初始化UART狀態機
UCA1IE |= UCRXIE; //RX使能
}
#define CPU_F ((double)8000000)
#define baud 9600 //設置波特率的大小
#define baud_setting (uint)((ulong)CPU_F/((ulong)baud)) //波特 率計 算公 式
#define baud_h (uchar)(baud_setting>>8) //提 取 高 位
#define baud_l (uchar)(baud_setting) //低位
#define DRE485_out P4DIR |= BIT6 //連接485芯片的DE,RE端口的IO設置為輸出狀態
4.發送和接收
UCRXBUFx 0-7 位 接受數據緩存被用戶直接使用,包含從接收移位寄存器接收的最后一個字
符。讀 UCAXRIFG 復位接收誤差位,即 UCADDR 或 UCIDLE 位以及 UCAXRXIFG。在 7 位數據模式中,UCAXRXBUF 通過 LSB調整使 MSB 總是復位。
UCTXBUFx 0-7 位 發送數據緩存被用戶直接使用,保持數據到移出發送移位寄存器并發送到
UCAXTXD 上。寫到發送數據緩存可清除 UCAXTXIFG。UCAXTXBUF 的 MSB 在 7 為數據時候不使用保持復位。
/*************************************************
UART_A1_sendData
函數功能:串口A1發送字符串數據
函數參數:Point:傳入的字符串 CountTemp:數據數量
函數返回值:無
說明:
*************************************************/
void UART_A1_sendData(unsigned char *Point,unsigned int CountTemp)
{
DE485;
while(CountTemp>0)
{
UCA1IFG &= ~UCTXIFG;
UCA1TXBUF = *Point;
while((UCA1IFG & UCTXIFG) == 0);
Point++;
CountTemp--;
}
}
//*************************************************************************
// 串口1發送數據函數
//*************************************************************************
void Send_Byte(uchar data)
{
DE485;
while(!(UCA1IFG&UCTXIFG)); //發送寄存器空的時候發送數據
UCA1TXBUF=data;
//RS485_CTR0;
}
//*************************************************************************
// 串口1發送字符串函數
//*************************************************************************
void Print_Str(uchar *s)
{
while(*s != '\0')
{
Send_Byte(*s++);
delay_ms(2);
}
}
//*************************************************************************
// 處理來自串口1的接收中斷
//*************************************************************************
#pragma vector=USCI_A1_VECTOR
__interrupt void UART1_RX_ISR(void)
{
uchar data=0;
data=UCA1RXBUF; //接收到的數據存起來
Send_Byte(data); //將接收到的數據再發送出去
delay_ms(5); //切換之前先有個小延時
RE485; //切換到接收狀態
}
上一篇:MSP430F169中關于RS485通訊的問題
下一篇:SIM900A GPRS調試筆記
推薦閱讀
史海拾趣
隨著公司規模的擴大和市場競爭的加劇,ELEKTRO-PLAST NASIELSK公司意識到必須實施全球化戰略以拓展市場。公司開始在國際市場尋找合作伙伴,建立生產基地和銷售網絡。通過與國際知名企業的合作,公司不僅提升了技術水平,還獲得了更多的市場份額。同時,公司還積極參與國際行業標準的制定和推廣工作,提升了在國際市場上的影響力。
在環保意識日益增強的今天,AEP公司積極響應國家號召,致力于綠色環保和可持續發展。公司投入大量資金研發環保型電子元器件,減少生產過程中的廢棄物排放。同時,公司還建立了完善的廢舊產品回收機制,對廢舊產品進行環保處理,實現資源的循環利用。這一舉措不僅提升了AEP公司的社會形象,也為公司的可持續發展注入了新的動力。
Adam Tech深知品質是企業生存和發展的基石。因此,公司始終將品質管理放在首位,通過引進先進的生產設備和技術,以及實施嚴格的質量控制流程,確保每一款產品都符合客戶的要求和行業標準。同時,公司還建立了完善的售后服務體系,及時解決客戶在使用過程中遇到的問題。這種對品質的執著追求和持續改進的精神,使得Adam Tech在客戶中贏得了良好的口碑。
Adam Tech深知品質是企業生存和發展的基石。因此,公司始終將品質管理放在首位,通過引進先進的生產設備和技術,以及實施嚴格的質量控制流程,確保每一款產品都符合客戶的要求和行業標準。同時,公司還建立了完善的售后服務體系,及時解決客戶在使用過程中遇到的問題。這種對品質的執著追求和持續改進的精神,使得Adam Tech在客戶中贏得了良好的口碑。
隨著電子行業的快速發展和市場競爭的加劇,All Sensors面臨著越來越多的挑戰。然而,公司始終保持著敏銳的市場洞察力和創新精神。通過與客戶緊密合作,仔細聆聽客戶需求,All Sensors不斷開發出適應市場變化的新產品和技術。同時,公司還注重提升產品質量和服務水平,贏得了客戶的廣泛認可和信賴。
這些故事只是All Sensors在電子行業發展歷程中的一部分縮影。作為一家全球領先的傳感器技術領軍企業,All Sensors將繼續秉承創新精神,不斷推動電子行業的發展和進步。
設計loop filter需要知道VCXO的input capacitance,但是手冊上只有一個output load=30pF。還請知道的兄弟說說output load是什么意思?!? 查看全部問答∨ |
wince5.0的系統,2450芯片 設為系統三分鐘后自動休眠 上電開機可以自動進入休眠狀態,可是休眠以后就無法進入自動休眠了!為什么? 請高手指教… 查看全部問答∨ |
看完卲貝貝的經典ucos教程后 按照教程那張碟的例子 用bc45編譯例一 雖然能編過去 但是就是有很多警告 多達48個 warring ucos/core.c: constant is long in function OS_InitTaskIdle ..... warring test.c: mixing p ...… 查看全部問答∨ |
|
PC機中的bootloader是用于引導加載程序內核用的、而嵌入式中的bootloader是用于和PC機中的BIOS使用類似的功能的同時也包括了PC機中的bootloader的功能。。我這樣理解對么?… 查看全部問答∨ |
問個debussy的nWave看波形的問題。我加信號后都沒有層次結構的名稱啦。都是:signal_name1, signal_name2, signal_name3 等等,能不能把它配置到 hie_0/signal_name1, hie_0/signal_name2, 或是 hie_top/.../hie_0/signal_name1 等等啊… 查看全部問答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 17:09 編輯 替同學問問壇子里有沒有人出C8051開發板的 有的給我發短消息就行 推薦也可以啊~ 本站強薦:185娛樂]城.足球]真_人.彩票齊全]手機可投]注任何游戲. 首次開戶送10元.首存送58元.信譽絕對保證185.cc … 查看全部問答∨ |
問題如下: 有一外部中斷源,接入INT0非端,當其中有中斷請求時,要求CPU把一個從內部RAM30H單元開始的50個字節的數據塊傳送到外部RAM從1000H開始的連續存儲區。請編寫對應的程序。 另注:題目沒有給出相應的電路圖,也沒有給出外部存儲 ...… 查看全部問答∨ |
作者:chenzhufly QQ:36886052 ( 轉載請注明出處) 硬件環境: BeagleBone 無線網卡: TL-WN321G+ 操作系統: linux-3.1.0-psp04.06.00.03.sdk1. Linux-3.1.0內核已經支持RT73的驅動,所以配置一下內核就可以了,主要由以下兩個步驟: ...… 查看全部問答∨ |
在使用STM32F107的例程應用到STM32F103時端口不能正確使用的問題 剛開始學STM32,買了一塊ALIENTEK的開發板感覺使用寄存器不習慣就改用學庫函數,正好手頭上有神州四號的開發板的例程就拿過來用了,一開始控制LED燈就出現問題了,燈不亮。在Keil上用仿真看到引腳電平一直不變,上網搜問題也沒 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 利用驗證框架 JAIST揭示開源自動駕駛系統的安全漏洞
- 現代汽車集團擬采用VR模擬器替代道路測試 提升未來車型的競爭力
- 研究人員開發光驅動致動器 可用于驅動水下機器人
- 吉利將發射“千里浩瀚”衛星,實現輔助駕駛系統與衛星功能深度融合
- 以鴻道工業操作系統為核心 打造工業智能機器人新生態
- UNIST研發出新表面處理技術 延長下一代鋰金屬電池的壽命
- 車載SerDes芯片行業的"DeepSeek"時刻——瑞發科HSMT SerDes閃耀2025上海車展
- 豐田顛覆傳統,固態電池明年就能量產,最受傷的將是中國?
- 基于恩智浦與onsemi的駕駛員監控系統方案
- 機器人行業周報|5月27日:宇樹G1格斗賽、人形機器人技術與場景融合趨勢