新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > msp430串口調(diào)試全記錄

msp430串口調(diào)試全記錄

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
先交代一下相關(guān)背景:

Mcu型號(hào):MS9430F149;

本文引用地址:http://2s4d.com/article/201611/316440.htm

實(shí)驗(yàn)板:自制(有些毛病,稍后坦白:)

開(kāi)發(fā)環(huán)境:IAR Embedded Workbench V2.10A+串口調(diào)試助手;

試驗(yàn)儀器:泰克數(shù)字示波器,萬(wàn)用表等;

筆者的底細(xì):馬上步入而立之年,學(xué)習(xí)點(diǎn)新東西,已感到有些力不從心了:)以前有些51基礎(chǔ),430是第一次搞!當(dāng)然這些都是業(yè)余愛(ài)好,以樂(lè)以鬧為主:)

PCB以前倒是做過(guò)一些,不過(guò)都是51的簡(jiǎn)單板子,線也少,在protel99se下自動(dòng)布線后再手動(dòng)調(diào)整一下就蒙混過(guò)關(guān),作出的板子雖然不太漂亮但也勉強(qiáng)實(shí)現(xiàn)功能,呵呵。這次做這塊430實(shí)驗(yàn)板完全手動(dòng)布線,大約做了兩天,眼睛都花花了:(等到拿到板子一調(diào)試發(fā)現(xiàn)還是有幾處粗心大意的地方,無(wú)奈只能飛線:(

轉(zhuǎn)入正題吧,開(kāi)始串口的收發(fā)數(shù)據(jù)調(diào)試:

找了根現(xiàn)成的串口線,和pc連接好,并設(shè)置好《串口調(diào)試助手》參數(shù),如圖。運(yùn)行,沒(méi)反應(yīng),一模MAX3232有些燙手,趕緊關(guān)閉電源,停止!經(jīng)仔細(xì)檢查發(fā)現(xiàn)9針串口DB9封裝錯(cuò)了,應(yīng)該是DB/M我用的是DB/F一個(gè)公頭一個(gè)母頭線序不一樣,補(bǔ)救措施:將串口拆下來(lái)焊接在底層(Bottom Layer)正好就對(duì)應(yīng)上了,不過(guò)當(dāng)時(shí)DB9焊的賳結(jié)實(shí),拆下來(lái)太困難,于是自己找了兩個(gè)串口母頭和一段線自己做一根串口線,有了前車之鑒這次特別小心別2、3對(duì)調(diào),做好后又反復(fù)測(cè)了幾次,沒(méi)問(wèn)題了,接好進(jìn)行二進(jìn)宮!

接上實(shí)驗(yàn)板用示波器測(cè)串口的2、3腳(RS232電平)沒(méi)有波形,拔下來(lái)直接測(cè)有波形,將2、3短接<串口調(diào)試助手接收區(qū)>顯示發(fā)送的內(nèi)容,沒(méi)問(wèn)題。如此一看可能是板子上的MAX3232剛才被燒毀了,撥拉下來(lái)再來(lái)一片新的,有波形了,但還是沒(méi)達(dá)到設(shè)計(jì)要求。

用示波器測(cè)430的串口1的TXD1端(P3.6)發(fā)現(xiàn)沒(méi)有波形,看來(lái)根本沒(méi)啟動(dòng)串口發(fā)送程序,將程序(▲)修改再測(cè),恩不錯(cuò)有波形了經(jīng)過(guò)MAX3232后也有波形了,按常理說(shuō)這時(shí)應(yīng)該在<串口調(diào)試助手接收區(qū)>顯示接收內(nèi)容了,但是讓人崩潰的是依舊沒(méi)有:(

以為是MAX3232的硬件(包括4個(gè)電容,典型值是0.1uF,當(dāng)時(shí)沒(méi)找到0.1的就用4.7uF的代替了)出問(wèn)題了,或者是RS232判決電平的毛病,這時(shí)在網(wǎng)上搜到了如下資料:

MAX232/MAX202接口輸出的電平為何比計(jì)算機(jī)輸出的RS-232電平低?

由于計(jì)算機(jī)內(nèi)部的RS-232接口多數(shù)采用±12V供電的接口芯片,而MAX232/MAX202及其它多數(shù)Maxim的RS-232接口都是采用單電源(+3.3V或+5V)供電,由內(nèi)部的電荷泵電路(倍壓和倍壓反相兩種方式)產(chǎn)生接口所需的電源,這樣就簡(jiǎn)化了電源設(shè)計(jì)。由于工作在倍壓和倍壓反相的電荷泵輸出電壓最高為±2×Vin(空載時(shí)),且?guī)лd能力有限,不管怎樣,多數(shù)Maxim接口驅(qū)動(dòng)器還是能夠保證幅值在±5V以上,以滿足RS-232接口端±3V的接收門限值。

沒(méi)問(wèn)題啊,我測(cè)到的波形在±6V左右啊,正在一籌莫展之際,想到了波特率是否一致的問(wèn)題,從示波器觀察PC發(fā)給430的1Bit數(shù)據(jù)的寬度約100us,頻率f=10k和設(shè)定的9600非常接近,沒(méi)問(wèn)題;在測(cè)430發(fā)給PC的1Bit數(shù)據(jù)寬度為6.4us,頻率f=156250,于是發(fā)現(xiàn)問(wèn)題所在,重新檢查源程序時(shí)鐘源選擇,發(fā)現(xiàn)程序(▲2)的疏忽,更改后,一切ok,再看<串口調(diào)試助手接收區(qū)>正反復(fù)的顯示“MSP430 MSP430 MSP430 MSP430…”

#include<msp430x14x.h>

void init_system(void);

void init_UART(void);

void transmit_data(void);

char Data[6]="MSP430";

//char Data[6]={0xff,0xff,0xff,0x55,0xff,0xff};

void main(void)

{

init_system();

while(1)

{

transmit_data();

}

}

void init_system(void)

{

WDTCTL=WDTPW+WDTHOLD;

init_UART();

}

void init_UART(void)

{

//P3SEL|=UART1_TX+UART1_RX;

P3SEL|=0xc0;

P3DIR |= 0x40; //串口發(fā)送數(shù)據(jù)端口為輸出,接收數(shù)據(jù)端口為輸入?

UCTL1=SWRST;//reset cotrol bit in UCTL1 ?

//UTCTL0|=SSEL0;//ACLK(▲2)

UTCTL1|=SSEL0;//ACLK

UBR01=0x03;//bode rate 9600.

UBR11=0x00;

UMCTL1=0x4a;

UCTL1=CHAR;//8 bits data format. enable UART

IFG2&=~UTXIFG1;

IE2|=URXIE1;//enable receive interrupt.

ME2|=URXE1+UTXE1;

}

void transmit_data(void)

{

unsigned char i;

for(i=0;i<6;i++)

{

TXBUF1=Data[i];

while((UTCTL1&TXEPT)!=TXEPT);

}

}

//***************************************************************************

//ISR for uart1 receive a byte.

//***************************************************************************

#pragma vector=UART1RX_VECTOR

__interrupt void usart1_rx (void)

{

if (RXBUF1 ==u)// u received?

{

_NOP();

//TXBUF1 = string1[i++];

}

}

以下是網(wǎng)上找到的資料:

使用ACLK為時(shí)鐘源(32768Hz)做9600bps誤差在±13%左右,嘗試使用SMCLK為時(shí)鐘源(默認(rèn)情況下外部晶振為32768Hz時(shí),SMCLK為1048576Hz)。如下設(shè)置后,波特率誤差小于±1%。不過(guò)此時(shí)CPU低功耗不能使用LPM3/LPM4。
UTCTL0 = SSEL1;     // UCLK = SMCLK
UBR00 = 0x6D;      // 1M/9600波特率寄存器低字節(jié)
UBR10 = 0x00;      // 1M/9600波特率寄存器高字節(jié)
UMCTL0 = 0x10;     //波特率調(diào)整值

總結(jié):通過(guò)這次430的串口調(diào)試過(guò)程,發(fā)現(xiàn)這個(gè)東西容易之處在于,任何一本430書(shū)都能找到串口收發(fā)的例子,而且也比較簡(jiǎn)單易懂;難處在于:涉及到軟硬兩方面的東西,一旦發(fā)現(xiàn)問(wèn)題得先判斷是硬毛病還是軟錯(cuò)誤,尤其對(duì)于象我這樣第一次搞的處男,而且還是自制的實(shí)驗(yàn)板,出了問(wèn)題簡(jiǎn)直是暈菜??!不過(guò)只要你不拋棄不放棄,再加上網(wǎng)路上眾多高手的指點(diǎn),相信調(diào)試成功只是時(shí)間的問(wèn)題:)祝你成功??!



關(guān)鍵詞: msp430串口調(diào)

評(píng)論


技術(shù)專區(qū)

關(guān)閉