STM32 UART4, UART5 的使用

STM32 UART4, UART5 的使用
2012年接到公司一個新案開發,因一般電腦的RS232埠只有一個,而需要用RS232埠的設備仍然很多,而這些設備傳送的資料很少,去買USBRS232常會發生當機的問題,因此希望我們開發一個多埠的RS232的資料轉接板,因我們公司用的是 stm32f103zc,從ST的硬體規格所示
 – Up to 5 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)
 所以它應該可以開發 14RS232埠,
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_IRQHandlerUART5_IRQHandler,而我們以前用的不是 hd而是ld


而什麼是 hdmdld 可參考ST資料 table 3



而後我發現在 不同的涵數庫中stm32f10x_vector.s 也定義相同的IRQHandler中斷。

留言

這個網誌中的熱門文章

STM32 I2C-EEPROM 的讀寫

ADC的校正方法

如何提高STM32 ADC的精度