2013年2月27日 星期三

[STM32F3 教學] USART




        雖然ST 出的discovery 都有附上ICE,而且現在的電腦也幾乎都把COM port拿掉了,但事實上UART,還是一個非常好用的介面,不過是拿來做除錯,或是要做電腦端的人機介面,都是一個非常實用的。UART 在此筆者就不多加介紹了,有興趣的話,可以去網路上找找相關的資料,這裡只是介紹要如何使用UART




STUSART其實是一個功能強大的加強型USART模組,他不只可以用來處理UART,也可以處理像是紅外線或是相關類似的周邊,可以從下圖可以得知不同的模組所支援的功能並不相同。









下圖是一個簡單的UART的原理介紹,有興趣的慢慢看,看不懂,原則上也不會影響使用上的結果,但如果需要硬體的debug時,這個就非常的重要。原則上只需要了解(start/data/parity/stop/clock) 大概的原理就行了。









另外STUART 是可以做「類操頻」的功能,一般的UART clock通常都是16個,而ST可以做到只需要8clock就行了,如果需要非常高速的UART,這是一個不錯的選項,不過相對的,就是抗雜訊能力就會變差。









在使用USART時,就需要了解不同模組所處在的匯流排上,這樣才不會讓程式在初始化時,造成錯誤,只要模組選擇錯誤,可是真的會除錯很久的。






至於GPIO選擇,就要看每顆不同的設計,原則上就是選擇自己所需要的功能與相對應的GPIO,這樣就可以了。筆者所提供的範例會同時選擇USART1USART2








GPIO要如何選擇到相對應的功能,就要靠AF來選擇,可以參照下表,這部分和STM 32F 1xx 系列不太相容,使用上需要特別注意一下。









程式部分,在使用時,需要把相對應的clock都打開,才不會造成漏網之魚,記得就是GPIO的設定部分,需要特別處理AF的功能。









如果有使用到的中斷程式,記得要把NVIC所相對應的中斷打開。至於中斷優先權,
PREEMPT / SUB 
你可以想像這是2組中斷優先權,PREEMPT 是主要的,SUB是次要的, 中斷優先權會以主要的為主,次要的為輔,數字愈低,中斷優先權愈高。











筆者所提供的範例就是 Rx收什麼資料,就利用Tx把收到的資料送出去。










如果和筆者一樣是LKK的程度,不太會用GOOGLE 雲端的話,那麼就照著下面的方法,應該就可以載下來了。

點入上面的google drive,應該可以看到這樣的頁面。







「另存新檔」,或是點選「檔案」--> 「下載」






        接著把TX/RX 接到電腦上,開啟了Terminal 可以看到資料已經開始傳送了。從電腦端送出的資料,會送到Discovery的板子上,Discovery 會把資料再送回電腦端。 大家不仿可以試試看。










下一篇:DMA 介紹

1 則留言:

  1. 感謝老大哥的分享

    Alternate Fuction 的設定真的很重要!

    為了這個設定搞了 好久 好久 好久...
    [版主回覆04/05/2013 21:41:10]哈,魔鬼總是藏在細節裡的。
    不過我還年青啦~ 過個20年再稱呼我這個「老大哥」也不遲。
    ^^"

    回覆刪除