色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > msp430串口調試全記錄

          msp430串口調試全記錄

          作者: 時間:2016-11-13 來源:網絡 收藏
          先交代一下相關背景:

          Mcu型號:MS9430F149;

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

          實驗板:自制(有些毛病,稍后坦白:)

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

          試驗儀器:泰克數字示波器,萬用表等;

          筆者的底細:馬上步入而立之年,學習點新東西,已感到有些力不從心了:)以前有些51基礎,430是第一次搞!當然這些都是業(yè)余愛好,以樂以鬧為主:)

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

          轉入正題吧,開始串口的收發(fā)數據調試:

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

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

          用示波器測430的串口1的TXD1端(P3.6)發(fā)現沒有波形,看來根本沒啟動串口發(fā)送程序,將程序(▲)修改再測,恩不錯有波形了經過MAX3232后也有波形了,按常理說這時應該在<串口調試助手接收區(qū)>顯示接收內容了,但是讓人崩潰的是依舊沒有:(

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

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

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

          沒問題啊,我測到的波形在±6V左右啊,正在一籌莫展之際,想到了波特率是否一致的問題,從示波器觀察PC發(fā)給430的1Bit數據的寬度約100us,頻率f=10k和設定的9600非常接近,沒問題;在測430發(fā)給PC的1Bit數據寬度為6.4us,頻率f=156250,于是發(fā)現問題所在,重新檢查源程序時鐘源選擇,發(fā)現程序(▲2)的疏忽,更改后,一切ok,再看<串口調試助手接收區(qū)>正反復的顯示“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ā)送數據端口為輸出,接收數據端口為輸入?

          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++];

          }

          }

          以下是網上找到的資料:

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

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



          關鍵詞: msp430串口調

          評論


          技術專區(qū)

          關閉