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中斷。

留言

這個網誌中的熱門文章

STM32 I2C-EEPROM 的讀寫

STM32 RCC 的用途

數位濾波