STM32 UART4, UART5 的使用
STM32 UART4, UART5 的使用
2012年接到公司一個新案開發,因一般電腦的RS232埠只有一個,而需要用RS232埠的設備仍然很多,而這些設備傳送的資料很少,去買USB轉RS232常會發生當機的問題,因此希望我們開發一個多埠的RS232的資料轉接板,因我們公司用的是 stm32f103zc,從ST的硬體規格所示
– Up to 5 USARTs
(ISO 7816 interface, LIN, IrDA capability, modem control)
所以它應該可以開發
1對4的RS232埠,
從Datasheet可以了解實際上所謂的5 USARTs,是三個USART
(USART1, USART2, USART3), 兩個UART U(ART4, UART5),差異如下表所示。
USART模式
|
USART1
|
USART2
|
USART3
|
UART4
|
UART5
|
非同步模式
|
◎
|
◎
|
◎
|
◎
|
◎
|
硬體流控制
|
◎
|
◎
|
◎
|
NA
|
NA
|
多緩存通訊(DMA)
|
◎
|
◎
|
◎
|
◎
|
◎
|
多處理器通訊
|
◎
|
◎
|
◎
|
◎
|
◎
|
同步
|
◎
|
◎
|
◎
|
NA
|
NA
|
智慧卡
|
◎
|
◎
|
◎
|
NA
|
NA
|
半雙工(單線模式)
|
◎
|
◎
|
◎
|
◎
|
◎
|
IrDA
|
◎
|
◎
|
◎
|
◎
|
◎
|
LIN
|
◎
|
◎
|
◎
|
◎
|
◎
|
根據這個表所示,我們只是開發資料轉接板,只要能用中斷來收、送資料理論上應該沒有問題,但是我們開發FW完成後,經debug後發現數收到資料,竟然無法利用中斷來觸發轉傳的功能,經過網路資料搜查發現竟是Startup 中 .s用錯了。
Startup
中 .s 檔案會定議不同的中斷資源,例 uart4 只有在 stm32-hd 中才會有出,所以需要確定 DCD UART4_IRQHandler 定義才能有中斷產生。
看下圖中的startup_stm32f10x_hd.s 才有定義UART4_IRQHandler、UART5_IRQHandler,而我們以前用的不是 hd而是ld。
而什麼是 hd、md、ld 可參考ST資料 table 3。
而後我發現在 不同的涵數庫中stm32f10x_vector.s 也定義相同的IRQHandler中斷。
留言
張貼留言