發表文章

STM32的USB 應用-3 hw_config.c

圖片
 這次的專案是模擬USB Keyboard 所以主是針對USB的資料發送,而在應用-1文中有說到,  資料發送是由下列三個函數所組成, UserToPMABufferCopy(InBuffer, GetEPTxAddr(ENDP1), 64); SetEPTxCount(ENDP1, 64);                     SetEPTxValid(ENDP1); 而在 JoyStickMouse這個專案,則只需二個函數 UserToPMABufferCopy(InBuffer, GetEPTxAddr(ENDP1), 8); SetEPTxValid(ENDP1);   而JoyStickMouse這個專案的資料發送則是在hw_config.c 中 的Joystick_Send這函數中,  來看看原始程式碼如下:     void Joystick_Send(u8 Keys) {   u8 Buffer[8] = {0, 0, 0, 0, 0, 0, 0, 0};   u8 i;   i="2";        // 對各個按鍵進行處理。注意,由於這裡的搖杆 5 個按鍵   // 不可能同時按下,所以返回的普通鍵數量不會超過 6 個。   // 如果你的鍵盤同時按下的普通鍵能夠超過 6 個的話,就需要做   // 點特殊處理了,將後面 6 位元組全部設置為 0xFF ,表示按鍵無法識別。   if(Keys&KEY_UP)   {    Buffer[i]...

STM32的USB 應用-2 usb_desc.c

STM32的USB 的 usb_desc.c檔 設備描述符,標準USB裝置有5種USB描述元,如下 :             1. 裝置描述元(Device) : 說明裝置的USB資訊,一個裝置只能有一組裝置描述元。             2. 配置描述元(Configuration) : 定義了裝置的配置資訊。             3. 介面描述元(Interface) : 說明介面所提供的配置。             4. 端點描述元(Endpoint) : USB裝置中的每一個端點都有自己的描述元(包括了端點的類型、大小等資訊)。             5. 字串描述元(String) : 是可選的。在STM32中如果你設計的裝置不想支援字串描述元,                                                         在裝置、配置和介面描述元內的所有字串     ...

STM32的USB 應用-1 大綱

STM32的USB 應用-1 2013年接了一個案子,是求做Keyboard 功能的案子,主要是將前端傳來的資料透過MCU以  Keyboard 的方法輸入到電腦端要求的程式上。所以必需針對整個LIB 功用了解,個人是用 JoyStickMouse 去修改,本篇先將個文件功能做一描述。 在 STM32_USB-FS-Device_Lib_V3.2.1\Libraries\STM32_USB-FS-Device_Driver\src 有一 底層結構包括6個檔:usb_core.c(USB匯流排資料處理的核心檔),usb_init.c,usb_int.c(用於端點資料登錄輸入中斷處理),usb_mem.c(用於緩衝區操作),usb_regs.c(用於寄存器操作) usb_sil.c (USB 重置和設定所有中斷旗標) 。 這個六個檔案在應用時是不會修改的,所以不是介紹重點。 主要要介紹的檔案的在 ST 的範例程式庫中 STM32_USB-FS-Device_Lib_V3.2.1\Project\JoyStickMouse\src 目錄下的組檔。這些檔案 hw_config.c 、 usb_desc.c 、 usb_endp.c 、 usb_istr.c 、 usb_prop.c 、 usb_pwr.c 幾個檔組成。其中 usb_istr.c 和 usb_pwr.c 整兩個檔不用修改,其他的檔都需要修改。 由於一開始入門研究是以Custom_HID為主所以以下文件說明是Custom_HID 為例 一、usb_desc.c文件 根據程式使用的通信方式修改。usb_desc.h檔中定義要根據usb_desc.c檔中的陣列的大 小;ConfigDescriptor[SIZ_CONFIG_DESC]下添加需要處理的端點;根據需要添加或刪除報告描述符(主要用於HID)和 CDC介面描述符等,這份文件必需十分了解才可以。 二、 hw_config.c 用於 USB 設備的配置。這個和 usb_desc.c未來會詳加說明。   Set_System :這個是函數是首先調用的函數,它的主要功能是初始化時鐘系統、使能相關的週邊設備電源。 Set_USBClock :這個是函數是 位於hw_config.c文件中,它的功...

STM32 UART4, UART5 的使用

圖片
STM 32 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 智慧卡 ◎   ◎   ◎ ...