本文來源電子發燒友社區,作者:Aivisus, 帖子地址:https://bbs.elecfans.com/jishu_2308773_1_1.html
串口通信測試(視頻詳見作者原帖子)
此次MC3172的串口測試設定兩個目標,一個是與PC通信,即能夠在PC上對MC3172板子進行收發數據。第二是與51單片機進行收發數據通訊。
首先查看到MC3172開發版有12組可以使用的串口配置,從網上找到某位大神總結的一張圖如下:
在看例程里,線程2就是串口通訊的例程,打開注釋,即可以進行串口通信的測試。這里使用一個uart轉usb的小轉接板,用于PC與MC3172進行串口通信,轉接板的RX,TX分別接入MC3172開發板的PC3(TX),pc2(RX),要注意RX/TX的接線順序,接反是收發不了數據的。
然后在PC上打開串口工具 SCOM ,把轉接板插入PC,找到轉接板對應的串口號,然后在scom里打開這個串口,設置波特率為 115200, 8N1 的設置,即可看到MC3172向PC連續發送的0x31數據了,PC上向開發板發送也一樣,發送后可以將數據再反向發回來,即驗證開發板與PC通訊成功。
- void GPCOM_UART_EXAMPLE(u32 gpcom_sel)
- {
- INTDEV_SET_CLK_RST(gpcom_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV4));
- GPCOM_SET_IN_PORT(gpcom_sel,(GPCOM_RXD_IS_P2));
- GPCOM_SET_OUT_PORT(gpcom_sel,(
- GPCOM_P0_OUTPUT_DISABLE|GPCOM_P3_OUTPUT_ENABLE|GPCOM_P2_OUTPUT_DISABLE|GPCOM_P1_OUTPUT_DISABLE|
- GPCOM_P0_IS_HIGH |GPCOM_P3_IS_TXD |GPCOM_P2_IS_HIGH |GPCOM_P1_IS_HIGH
- ));
- GPCOM_SET_COM_MODE(gpcom_sel,GPCOM_UART_MODE);
- GPCOM_SET_COM_SPEED(gpcom_sel,12000000,9600); //這里<---115200改為9600
- GPCOM_SET_OVERRIDE_GPIO(gpcom_sel, (
- GPCOM_P2_OVERRIDE_GPIO|GPCOM_P2_INPUT_ENABLE |
- GPCOM_P3_OVERRIDE_GPIO
- ……
- }
首先通過PC連接51開發板,把通訊速率調至9600,8N1的設置,向開發板發送字符串,51單片機開發一個簡單的程序,就是將串口收到的acsii碼顯示到LCD屏幕上,PC向51單片機發送字符串時,51單片機能夠正確的顯示出發送的內容,因此驗證51單片機通訊工作正常。
然后把MC3172的PC3(TX),PC2(RX)腳連接51單片機的P30,P31口,即把MC3172串口與51單片機串口連接起來,驗證MC3172能夠51單片機通訊。
燒寫好程序,連接好線后,運行MC3172程序,單片機LCD 上顯示的是亂碼,并沒有正確的顯示出預設的字符串。又將MC3172連接到PC上,PC上使用9600速率進行連接,發現也是收到的數據不正確。
經過幾番測試研究,又上網找資料,終于在一個論壇里,發現一個官方技術人員關于MC3172串口通訊的回帖,串口速率的設置,不能只設置波特率,需要根據芯片主頻,來設定合適的分頻數,以及芯片外設的主頻率和通訊波特率,并且主頻頻率于波特率的比值不能超過255, 那這一下就明白了,只修改通訊速率是不行的。
那么以這次與51開發板通訊所需要的9600通訊來說,是這樣計算的,因為使用的是200M(實際是192076800Hz) 先進行1/256分頻,得到外設的工作頻率 750300, 然后檢驗 6002400/9600=78.1, 78 < 255, 即合適。如果這里分頻選擇小了,那么外設工作頻率就大,比如選擇32分頻,那么外設工作頻率為192076800Hz/32=6002400, 再檢查倍率6002400/9600=625, > 255, 則無法正常工作。
最后在選擇內部rc晶振下,修改兩行代碼如下,即可以正確的與51單片機進行通訊了。
INTDEV_SET_CLK_RST(gpcom_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIv2));
改為
INTDEV_SET_CLK_RST(gpcom_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV256));
GPCOM_SET_COM_SPEED(gpcom_sel,12000000,115200);
改為
GPCOM_SET_COM_SPEED(gpcom_sel,750300,9600);
最后終于在51單片機上收到MC3172板子發來正確
的數據了。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
發布評論請先 登錄
相關推薦
dsPIC33EDV64MC205電機控制開發板用戶指南
電子發燒友網站提供《dsPIC33EDV64MC205電機控制開發板用戶指南.pdf》資料免費下載
發表于 01-21 14:34
?0次下載
有獎丨米爾 全志T536開發板免費試用
米爾與全志合作發布的新品基于全志T536應用處理器的MYD-LT536-GK開發板免費試用活動來啦~~米爾提供了3塊價值750元的MYD-LT536-GK開發板發起
瑞芯微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示
本文介紹瑞芯微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
正點原子fpga開發板不同型號
正點原子作為國內領先的FPGA開發板供應商,其產品線覆蓋了從入門級到高端應用的各個領域。這些開發板不僅適用于學術研究,還廣泛應用于工業控制、通信、圖像處理等多個領域。 1. 入門級開發板 1.1
點擊參與米爾NXP i.MX 93開發板有獎試用
米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起
fpga開發板是什么?fpga開發板有哪些?
FPGA開發板是一種基于FPGA(現場可編程門陣列)技術的開發平臺,它允許工程師通過編程來定義和配置FPGA芯片上的邏輯電路,以實現各種數字電路和邏輯功能。FPGA開發板通常包括FPGA芯片、時鐘模塊、電源模塊、輸入輸出接口等組
fpga開發板與linux開發板區別
FPGA開發板與Linux開發板是兩種不同的硬件開發平臺,各自具有不同的特點和應用場景。在以下的文章中,我將詳細介紹FPGA開發板和Linux開發板
51單片機開發板的主要功能 51單片機開發板能做什么
51單片機開發板是一種基于8051系列單片機芯片的開發板,具有豐富的功能和廣泛的應用。下面將詳細介紹51單片機開發板的主要功能以及能夠實現的
評論