雖然ST 出的discovery 都有附上ICE,而且現在的電腦也幾乎都把COM port拿掉了,但事實上UART,還是一個非常好用的介面,不過是拿來做除錯,或是要做電腦端的人機介面,都是一個非常實用的。UART 在此筆者就不多加介紹了,有興趣的話,可以去網路上找找相關的資料,這裡只是介紹要如何使用UART。
ST的USART其實是一個功能強大的加強型USART模組,他不只可以用來處理UART,也可以處理像是紅外線或是相關類似的周邊,可以從下圖可以得知不同的模組所支援的功能並不相同。
下圖是一個簡單的UART的原理介紹,有興趣的慢慢看,看不懂,原則上也不會影響使用上的結果,但如果需要硬體的debug時,這個就非常的重要。原則上只需要了解(start/data/parity/stop/clock) 大概的原理就行了。
另外ST的UART 是可以做「類操頻」的功能,一般的UART clock通常都是16個,而ST可以做到只需要8個clock就行了,如果需要非常高速的UART,這是一個不錯的選項,不過相對的,就是抗雜訊能力就會變差。
在使用USART時,就需要了解不同模組所處在的匯流排上,這樣才不會讓程式在初始化時,造成錯誤,只要模組選擇錯誤,可是真的會除錯很久的。
至於GPIO選擇,就要看每顆不同的設計,原則上就是選擇自己所需要的功能與相對應的GPIO,這樣就可以了。筆者所提供的範例會同時選擇USART1與USART2。
GPIO要如何選擇到相對應的功能,就要靠AF來選擇,可以參照下表,這部分和STM 32F 1xx 系列不太相容,使用上需要特別注意一下。
程式部分,在使用時,需要把相對應的clock都打開,才不會造成漏網之魚,記得就是GPIO的設定部分,需要特別處理AF的功能。
如果有使用到的中斷程式,記得要把NVIC所相對應的中斷打開。至於中斷優先權,
PREEMPT / SUB 你可以想像這是2組中斷優先權,PREEMPT 是主要的,SUB是次要的, 中斷優先權會以主要的為主,次要的為輔,數字愈低,中斷優先權愈高。
PREEMPT / SUB 你可以想像這是2組中斷優先權,PREEMPT 是主要的,SUB是次要的, 中斷優先權會以主要的為主,次要的為輔,數字愈低,中斷優先權愈高。
筆者所提供的範例就是 當Rx收什麼資料,就利用Tx把收到的資料送出去。
如果和筆者一樣是LKK的程度,不太會用GOOGLE 雲端的話,那麼就照著下面的方法,應該就可以載下來了。
點入上面的google drive,應該可以看到這樣的頁面。
「另存新檔」,或是點選「檔案」--> 「下載」
接著把TX/RX 接到電腦上,開啟了Terminal, 可以看到資料已經開始傳送了。從電腦端送出的資料,會送到Discovery的板子上,Discovery 會把資料再送回電腦端。 大家不仿可以試試看。
下一篇:DMA 介紹
感謝老大哥的分享
回覆刪除Alternate Fuction 的設定真的很重要!
為了這個設定搞了 好久 好久 好久...
[版主回覆04/05/2013 21:41:10]哈,魔鬼總是藏在細節裡的。
不過我還年青啦~ 過個20年再稱呼我這個「老大哥」也不遲。
^^"