吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AT32講堂046 | 雅特力AT32 MCU USB設備庫的架構和使用方法

雅特力 AT32 MCU ? 2023-02-22 11:23 ? 次閱讀

AT32 USB設備協議庫

這部分主要介紹AT32 USB設備庫的結構和庫的使用方法,AT32 USB是基于USB2.0全速設備,不支持USB2.0高速設備。這里庫的作用是用來管理USB外設和實現USB的基本協議,使開發者能夠更快的上手開發。USB Deivce庫包含以下幾個模塊如圖1:

用戶應用程序

此部分為開發者根據應用具體需求開發應用程序。

USB Core Driver和USB設備類

USB Core Driver:此部分實現USB設備標準協議棧,標準請求等接口。

USB設備類:此部分實現一個具體USB設備的描述和設備請求。

USB硬件底層接口

此部分實現硬件寄存器抽象接口

USB/OTG外設

圖1. USB庫結構c131a572-b1f4-11ed-ad0d-dac502259ad0.png

AT32 USB庫文件

如下是AT32 USB應用工程結構圖:圖2. AT32工程結構c15f5850-b1f4-11ed-ad0d-dac502259ad0.pngCore Driver庫路徑:OTGFS-->middlewares\usb_driversUSBFS-->middlewares\usbd_driversDevice Class庫路徑:middlewares\usbd_class如下是USB庫文件列表:表1. USB庫文件列表c18169b8-b1f4-11ed-ad0d-dac502259ad0.png表2. USB設備類型文件列表c19bf012-b1f4-11ed-ad0d-dac502259ad0.png

USB設備庫文件說明

USB庫實現USB設備標準請求,同時實現USB規格里面的4種傳輸類型(control,interrupt,bulk,isochronous)的函數接口。圖3.USB庫文件結構c1c968da-b1f4-11ed-ad0d-dac502259ad0.png

USB設備文件函數接口

usbd_int.c函數接口usbd_int.c主要處理底層中斷,不同USB外設,此部分會根據外設不同而有所改變。AT32系列芯片USB外設存在USBFS和OTGFS兩種外設,此部分函數接口基本相同。表3.usbd_int函數接口c1fd4b28-b1f4-11ed-ad0d-dac502259ad0.pngusbd_core.c函數接口usbd_core.c此文件封裝不同的usb接口用于不同的地方調用,包括一些接收,發送函數等。表4.usbd_core函數接口c2297ad6-b1f4-11ed-ad0d-dac502259ad0.pngusbd_sdr.c函數接口usbd_sdr.c此文件處理USB一些標準請求。表5.usbd_sdr函數接口c2618a02-b1f4-11ed-ad0d-dac502259ad0.png支持的標志設備請求如下表:表6. 標準設備請求c2832504-b1f4-11ed-ad0d-dac502259ad0.pngusbd_xx_class.c函數接口usbd_xx_class.c 此文件為具體設備類型的數據處理,通過結構體函數來實現不同設備類型數據的處理。開發者根據不同的設備類型,來實現下面函數結構體中的函數,達到不同應用結果。函數結構體如下:表7.設備class函數結構體c2ad8da8-b1f4-11ed-ad0d-dac502259ad0.png表8.設備class函數接口c2d040fa-b1f4-11ed-ad0d-dac502259ad0.pngusbd_xx_desc.c函數接口usbd_xx_desc.c此文件為設備描述文件,設備描述信息都通過此文件的函數接口返回給主機。表9.設備描述函數結構體c2fe3cb2-b1f4-11ed-ad0d-dac502259ad0.png表10.設備描述接口函數c325cdae-b1f4-11ed-ad0d-dac502259ad0.png其它參數函數的參數結構體如下,USB設備庫中參數傳遞使用結構體usbd_core_type,如下圖:圖4.全局結構體c3499464-b1f4-11ed-ad0d-dac502259ad0.pngUSB設備的連接狀態如下圖:連接狀態包含:

默認狀態

地址狀態

配置狀態

掛起狀態

可使用usbd_connect_state_get函數查詢當前USB設備的連接狀態。圖5.USB設備連接狀態c3841832-b1f4-11ed-ad0d-dac502259ad0.pngUSB設備返回值,USB函數接口使用如下函數返回值。圖6.函數返回值c3a789f2-b1f4-11ed-ad0d-dac502259ad0.png

端點FIFO分配

USB要正常收發數據,在初始化時需要為每個端點分配發送/接收的FIFO,FIFO的大小可以根據端點上傳輸的最大包長度確認。注意,分配給所有端點FIFO大小的和不能超過系統分配給USB緩沖區的最大長度,具體USB的緩沖區大小參考RM上的描述。開發者可以參考例程usb_conf.h為每個端點自定義分配FIFO。另外使用USBFS和OTGFS兩種不同的外設時,usb_conf.h中對端點FIFO分配稍有不同。USBFS外設端點FIFO分配USBFS外設端點分配實現了兩種分配方式,一種自動分配,一種是用戶自定義分配。

  • 自動分配:

1. 通過打開usb_conf.h中USB_EPT_AUTO_MALLOC_BUFFER宏開啟自動分配功能

2. 在調用打開端點函數(usbd_ept_open)時自動根據傳入的最大包長度自動分配FIFO

3. 如果使用雙緩沖模式(同步端點,雙緩沖Bulk)時,在打開端點前先調用(usbd_ept_dbuffer_enable)表示使用雙緩沖模式,可參考audio例程。

4. 自動分配audio例程配置如下:

usb_conf.h

c3e02f64-b1f4-11ed-ad0d-dac502259ad0.png

audio_class.c:端點打開

c3ffc040-b1f4-11ed-ad0d-dac502259ad0.png

  • 自定義分配:

1. 關閉usb_conf.h中USB_EPT_AUTO_MALLOC_BUFFER宏開啟自定義分配

2. 在調用打開端點函數(usbd_ept_open)時調用usbd_ept_buf_custom_define函數自定義為端點分配FIFO,參考vcp_loopback例程。

3. vcp_loopback例程自定義分配配置

usb_conf.h:

c424dc04-b1f4-11ed-ad0d-dac502259ad0.png

cdc_class.c端點打開:

c459c9f0-b1f4-11ed-ad0d-dac502259ad0.png

OTGFS外設端點FIFO分配OTGFS對于端點的接收緩沖是共享的,因此對于所有的OUT端點,只需要分配一個接收FIFO。對發送緩沖區則需要為每個發送端點分配一塊自己專用的FIFO。支持的端點個數請參考對應型號的RM。OTGFS的端點分配都需要開發者根據端點支持的最大包長度進行分配,注意usb_conf.h中對端點分配的FIFO大小單位為word(Byte)。以vcp_loopback例程為例:c48da1a8-b1f4-11ed-ad0d-dac502259ad0.png

USB設備初始化

在使用USB時,需要對USB的寄存器做一些基本的初始化,通過調用USB的初始化函數完成這部分的操作,對于外設USBFS和OTGFS在初始化時所調用的函數一定的區別。USBFS外設初始化USBFS初始化函數usbd_core_init包含5個參數:c4a95b82-b1f4-11ed-ad0d-dac502259ad0.png例程vcp_loopback的初始化如下:usbd_core_init(&usb_core_dev, USB, &class_handler, &desc_handler, 0);OTGFS外設初始化OTGFS初始化函數usbd_init包含5個參數:c4ccaf56-b1f4-11ed-ad0d-dac502259ad0.png例程vcp_loopback的初始化如下:c4e7203e-b1f4-11ed-ad0d-dac502259ad0.png

USB設備中斷處理

USB中斷入口函數usbd_irq_handler處理所有USB中斷,包括Reset,端點收發數據,SOF,掛起,喚醒等中斷,下面介紹一些典型的中斷處理。圖7.USB中斷處理函數c5111aba-b1f4-11ed-ad0d-dac502259ad0.pngReset中斷處理當USB設備在總線上檢測到Reset信號時,將產生Reset中斷。軟件在收到Reset中斷時,需要做基本的初始化,用于后面的枚舉處理。Reset中斷處理函數usbd_reset_handler:

端點FIFO初始化

設備地址設置為0

端點0初始化

調用設備類的事件函數

udev->class_handler->event_handler(udev, USBD_RESET_EVENT);

端點中斷處理當USB端點收發數據完成時,將產生對應的端點完成中斷,端點完成中斷處理發送和接收的數據。中斷處理函數:usbd_xeptx_handlerSOF中斷處理打開SOF中斷之后,USB設備在每收到一個主機發送的SOF就會產生SOF中斷。中斷處理函數:usbd_sof_handler

中斷處理函數會調用設備類的SOF處理函數

udev->class_handler->sof_handler(udev);

Suspend中斷處理當總線滿足掛起條件時,USB設備會產生一個掛起中斷,開發者可根據此中斷判斷是否需要進入低功耗模式。中斷處理函數:usbd_suspend_handler

連接狀態設置為掛起狀態

設置設備進入掛起狀態

調用設備類的事件處理函數

udev->class_handler->event_handler(udev, USBD_SUSPEND_EVENT);

Wakeup中斷處理當設備在掛起狀態時,如果總線上有wakeup信號,USB設備將產生wakeup中斷。中斷處理函數:usbd_wakeup_handler

設備退出掛起狀態

連接狀態設置為進入掛起之前的狀態

調用設備類事件處理函數

udev->class_handler->event_handler(udev, USBD_WAKEUP_EVENT);

USB設備端點數據處理流程

USB設備在收到主機發送的數據包之后,對應端點0的數據(IN/OUT/SETUP)會做單獨處理,其它端點的數據會調用設備類的IN/OUT handler進行數據處理。如下圖所示數據的處理過程:圖8.端點數據處理流程c537bf80-b1f4-11ed-ad0d-dac502259ad0.png圖9. Setup處理流程c5566570-b1f4-11ed-ad0d-dac502259ad0.pngUSB控制端點枚舉流程當設備接到主機之后,通過控制端點(端點0)進行枚舉動作,典型的枚舉流程圖如下:圖10.USB枚舉流程c572012c-b1f4-11ed-ad0d-dac502259ad0.pngUSB控制傳輸過程包含SETUP-DATA-STATUS三個階段,如下是一個主機獲取設備信息的傳輸過程GET_DESCRIPTOR:圖11 Get Descriptorc5b976c4-b1f4-11ed-ad0d-dac502259ad0.png如下是USB庫處理上圖Get Descriptor的流程:圖12. USB庫處理Get Descriptor調用流程c5ffd466-b1f4-11ed-ad0d-dac502259ad0.pngUSB設備請求格式(Setup請求)圖13.Setup請求格式c6318966-b1f4-11ed-ad0d-dac502259ad0.pngUSB應用端點處理流程應用端點指客戶實際應用使用到的非0端點,包括Bulk,interrupt,ISO等端點類型,這些端點的數據通回調函數in_handler和out_handler進行處理。開發者只需要在xxx_class.c中class_in_handler和class_out_handler里面實現具體端點的數據處理即可。IN端點數據處理:圖14.IN端點數據處理c662f38e-b1f4-11ed-ad0d-dac502259ad0.pngOUT端點數據處理:圖15.OUT端點數據處理c67c7aa2-b1f4-11ed-ad0d-dac502259ad0.png

USB設備類型例程

本章將說明使用AT32 USB設備庫實現不同的設備類型的例程。目前實現的設備例程如下:

Audio

custom_hid

keyboard

mouse

msc(mass strorage)

printer

vcp_loopback

virtual_msc_iap

composite_vcp_keyboard

hid_iap

Audio例程

Audio例程使用audio V1.0的協議實現一個Speaker和Microphone,傳輸Audio數據使用同步傳輸,Speaker使用同步OUT傳輸,Microphone使用同步IN傳輸。Audio的例程運行在AT-START評估板上,Audio Speaker和Mircophone是基于Audio Arduino Demo Board進行實現,實驗過程中需要連接AT-START和Audio Arduino Board,更多開發板信息請參考《UM_Audio Arduino Daughter Board_V1.0/V2.0》,Audio協議請參數《Universal Serial Bus Device Class Define for Audio Device V1.0》。實現功能實現一個Speaker和Microphone的Audio復合設備,可以同時進行音頻播放和錄音。Speaker功能:

支持16K,48K采樣率

支持采樣率切換

支持16bit采樣

支持靜音

支持音量調節

支持feedback功能

支持雙通道

Microphone功能:

支持16K,48K采樣率

支持采樣率切換

支持16bit采樣

支持靜音

支持音量調節

支持雙通道

外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉以及Audio部分控制。

端點1 IN:用于Microphone錄音數據

端點1 OUT:用于Speaker播放數據

端點2 IN:用于Feedback數據

I2C

使用I2C發送控制信息到音頻Board

I2S:

使用I2S1發送數據到音頻board(speaker)

使用I2S2從音頻board接收數據(microphone)

DMA

使用DMA1通道3傳輸I2S1的數據

使用DMA1通道4傳輸I2S2的數據

TIMER:

使用TIMER產生Codec所需要的時鐘

Audio設備實現USB Audio設備類實現源文件在audio_class.c和audio_desc.c中,外部codec的控制以及音頻數據的處理都在audio_codec.c中實現,根據主機的請求設置會調用到audio_codec.c中具體的設置函數。另外需要特別注意關于USB設備端點FIFO大小的分配在usb_conf.h中配置,此部分根據具體端點傳輸的最大包長度進行分配。1. 設備描述:(audio_desc.c/h)

Audio設備的描述(g_usbd_descriptor)

Audio設備的配置描述信息(g_usbd_configuration)

AC interface

Mricrophone Streaming interface

Microphone Terminal INPUT/OUTPUT

Microphone Feature Unit

Microphone Endpoint

Speaker Streaming interface

Speaker Terminal INPUT/OUTPUT

Speaker Feature Unit

Speaker Endpoint

Feedback Endpoint

Lang id (g_string_lang_id)

序列號(g_string_serial)

廠商產品ID(audio_desc.h)

c6915166-b1f4-11ed-ad0d-dac502259ad0.png

制造商、產品名、配置描述、接口描述(audio_desc.h)

c6a4482a-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理部分(audio_class.c/h audio_codec.c/h)

端點初始化(class_init_handler)

c6c54c8c-b1f4-11ed-ad0d-dac502259ad0.png

端點清除(class_clear_handler)

c6ee9a1a-b1f4-11ed-ad0d-dac502259ad0.png

Audio控制請求(class_setup_handler)

實現如下audio控制請求:

c7825872-b1f4-11ed-ad0d-dac502259ad0.png

c7a71a04-b1f4-11ed-ad0d-dac502259ad0.png

Audio音量、靜音、采樣率設置(class_ept0_rx_handler)

此函數用于接收完主機發送的設置數據之后進行處理,包括設置音量,靜音,以及采樣率的設置。

c7bb233c-b1f4-11ed-ad0d-dac502259ad0.png

Microphone和Feedback數據傳輸(class_in_handler)

c7ea5abc-b1f4-11ed-ad0d-dac502259ad0.png

Speaker數據接收(class_out_handler)

c8169b90-b1f4-11ed-ad0d-dac502259ad0.png

audio_codec.c中實現codec具體的控制以及數據處理,需要實現如下函數:

c83ebfbc-b1f4-11ed-ad0d-dac502259ad0.png

以上函數可根據例程里的方式進行實現,也可以根據開發者實際使用的codec來進行修改,對于codec的初始化部分,在這里將不再講述。

audio例程功能配置

audio_conf.h中可以對當前audio例程進行配置,例如:是否需要speaker功能,支持采樣率等,有如下選項配置:

c86a56ea-b1f4-11ed-ad0d-dac502259ad0.png

如何根據Audio例程進行開發本章將簡單描述如何修改audio例程的代碼來進行開發,根據應用具體的需求來修改代碼。

根據功能需求修改audio配置(audio_conf.h)

根據功能需求修改設備描述信息(audio_desc.c, audio_desc.h)

設備描述信息(g_usbd_descriptor)

設備配置描述信息(g_usbd_configuration)

其它描述

根據功能修改要使用端點(audio_class.c, audio_class.h)

端點定義(audio_class.h)

端點初始化(class_init_handler,class_clear_handler)

修改使用的Audio控制請求

控制請求修改(class_setup_handler)

控制請求設置處理(class_ept0_rx_handler)

Audio數據處理修改

IN數據處理(class_in_handler)

OUT數據處理(class_out_handler)

根據需求修改端點FIFO大小分配(usb_conf.h)

根據具體需求實現codec函數接口(audio_codec.c)


custom_hid例程

custom_hid實現一個HID(human interface device)功能,與上位機(Artery_UsbHid_Demo)通信完成一些簡單的交互操作,HID使用中斷傳輸與上位機通信,例程在AT-START開發板上運行,上位機可在官網下載,關于HID協議參考《Human Interface Devices (HID) V1.11》。實現功能

上位機顯示按鍵狀態

通過上位機控制開發板LED等開關狀態

HID數據回環功能

外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉

端點1 IN:用于數據發送

端點1 OUT:用于數據接收

custom_hid設備實現custom_hid設備類實現源代碼主要在custom_hid_class.c和custom_hid_desc.c中,這兩個源文件實現了對設備的描述和設備的處理。1. 設備描述:(custom_hid_desc.c/h)

custom hid設備描述(g_usbd_descriptor)

custom hid設備配置描述(g_usbd_configuration)

HID interface

HID Endpoint

custom hid report描述(g_usbd_hid_report)

HID_REPORT_ID_2(LED2)

HID_REPORT_ID_3(LED3)

HID_REPORT_ID_4(LED4)

HID_REPORT_ID_5(BUTTON)

HID_REPORT_ID_6(LOOPBACK DATA)

Lang id(g_string_lang_id)

序列號(g_string_serial)

廠商產品ID(custom_hid_desc.h

c8968c10-b1f4-11ed-ad0d-dac502259ad0.png

制造商、產品名、配置描述、接口描述(custom_hid_desc.h)

c8b456c8-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理部分(custom_hid_class.c/h)

端點初始化(class_init_handler)

c8d81806-b1f4-11ed-ad0d-dac502259ad0.png

端點清除(class_clear_handler)

c8f9288e-b1f4-11ed-ad0d-dac502259ad0.png

HID設備類請求(class_setup_handler)

實現如下請求:

SET_PROTOCOL

GET_PROTOCOL

SET_IDLE

GET_IDLE

SET_REPORT

代碼如下:

c91c1dc6-b1f4-11ed-ad0d-dac502259ad0.png

Custom_HID發送數據

c9436d36-b1f4-11ed-ad0d-dac502259ad0.png

Custom_HID接收數據

c96cd112-b1f4-11ed-ad0d-dac502259ad0.png

數據處理

c98eb19c-b1f4-11ed-ad0d-dac502259ad0.png

如何根據custom hid例程進行開發本章將簡單描述如何修改custom_hid例程的代碼來進行開發,根據應用具體的需求來修改代碼。

根據功能需求修改設備描述信息(custom_hid_desc.c, custom_hid_desc.h)

設備描述信息(g_usbd_descriptor)

設備配置描述信息(g_usbd_configuration)

設備報告描述符(g_usbd_hid_report)

其它描述

根據功能修改要使用端點(custom_hid_class.c, custom_hid_class.h)

端點定義(custom_hid_class.h)

端點初始化(class_init_handler,class_clear_handler)

修改使用的custom_hid控制請求

控制請求修改(class_setup_handler)

控制請求設置處理(class_ept0_rx_handler)

custom_hid發送接收數據處理修改

IN數據處理(class_in_handler)

OUT數據處理(class_out_handler)

根據需求修改端點FIFO大小分配(usb_conf.h)

修改數據處理部分

keyboard例程

keyboard實現一個鍵盤功能,使用中斷傳輸與上位機通信,例程在AT-START開發板上運行,通過按鍵發送字符串到主機。實現功能

通過按鍵發送字符串(”Keyboard Demo”)到主機

外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉

端點1 IN:用于數據發送

keyboard設備實現keyboard設備類實現源代碼主要在keyboard_class.c和keyboard_desc.c中,這兩個源文件實現了對設備的描述和設備的處理。1. 設備描述:(keyboard_desc.c/h)

keyboard設備描述(g_usbd_descriptor)

keyboard設備配置描述(g_usbd_configuration)

keyboard interface

keyboard endpoint

keyboard report描述(g_usbd_hid_report)

Lang id(g_string_lang_id)

序列號(g_string_serial)

廠商產品ID(keyboard_desc.h)

ca2bd8aa-b1f4-11ed-ad0d-dac502259ad0.png

制造商、產品名、配置描述、接口描述(keyboard_desc.h)

ca4b7a5c-b1f4-11ed-ad0d-dac502259ad0.png


2. 數據處理部分(keyboard_class.c/h)

端點初始化(class_init_handler)

ca7299b6-b1f4-11ed-ad0d-dac502259ad0.png

端點清除(class_clear_handler)

ca94e340-b1f4-11ed-ad0d-dac502259ad0.png

HID設備類請求(class_setup_handler)

實現如下請求:

SET_PROTOCOL

GET_PROTOCOL

SET_IDLE

GET_IDLE

SET_REPORT

keyboard發送數據

cab7b65e-b1f4-11ed-ad0d-dac502259ad0.png

keyboard字符數據處理

caeec0d6-b1f4-11ed-ad0d-dac502259ad0.png

如何根據keyboard例程進行開發本章將簡單描述如何修改keyboard例程的代碼來進行開發,根據應用具體的需求來修改代碼。

根據功能需求修改設備描述信息(keyboard_desc.c, keyboard_desc.h)

設備描述信息(g_usbd_descriptor)

設備配置描述信息(g_usbd_configuration)

設備報告描述符(g_usbd_hid_report)

其它描述

根據功能修改要使用端點(keyboard_class.c, keyboard_class.h)

端點定義(keyboard_class.h)

端點初始化(class_init_handler,class_clear_handler)

修改使用的keyboard控制請求

控制請求修改(class_setup_handler)

控制請求設置處理(class_ept0_rx_handler)

keyboard發送接收數據處理修改

IN數據處理(class_in_handler)

OUT數據處理(class_out_handler)

根據需求修改端點FIFO大小分配(usb_conf.h)

修改數據處理部分

Mouse例程

實現功能mouse實現一個簡單的鼠標功能,使用中斷傳輸與上位機通信,例程在AT-START開發板上運行,通過開發板上的按鍵發送鼠標右鍵功能。圖16.鼠標傳輸格式cb434d40-b1f4-11ed-ad0d-dac502259ad0.png鼠標d通常是通過設置X和Y值來控制PC鼠標移動。外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉

端點1 IN:用于數據發送

mouse設備實現mouse設備實現源代碼主要在mouse_class.c和mouse_desc.c中,這兩個源文件實現了對設備的描述和設備的處理。1. 設備描述:(mouse_desc.c/h)

mouse設備描述(g_usbd_descriptor)

mouse設備配置描述(g_usbd_configuration)

mouseinterface

mouseendpoint

mouse report描述(g_usbd_hid_report)

Lang id(g_string_lang_id)

序列號(g_string_serial)

廠商產品ID(mouse_desc.h)

cb592174-b1f4-11ed-ad0d-dac502259ad0.png

制造商、產品名、配置描述、接口描述(keyboard_desc.h)

cb795840-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理部分(mouse_class.c/h)

端點初始化(class_init_handler)

cb9d38dc-b1f4-11ed-ad0d-dac502259ad0.png

端點清除(class_clear_handler)

cbbb7d24-b1f4-11ed-ad0d-dac502259ad0.png

HID設備類請求(class_setup_handler)

實現如下請求:

SET_PROTOCOL

GET_PROTOCOL

SET_IDLE

GET_IDLE

SET_REPORT

keyboard發送數據

cbd6a270-b1f4-11ed-ad0d-dac502259ad0.png

mouse數據處理

cbfae8ba-b1f4-11ed-ad0d-dac502259ad0.png

如何根據mouse例程進行開發本章將簡單描述如何修改mouse例程的代碼來進行開發,根據應用具體的需求來修改代碼。

根據功能需求修改設備描述信息(mouse_desc.c, mouse_desc.h)

設備描述信息(g_usbd_descriptor)

設備配置描述信息(g_usbd_configuration)

設備報告描述符(g_usbd_hid_report)

其它描述

根據功能修改要使用端點(mouse_class.c, mouse_class.h)

端點定義(mouse_class.h)

端點初始化(class_init_handler,class_clear_handler)

修改使用的mouse控制請求

控制請求修改(class_setup_handler)

控制請求設置處理(class_ept0_rx_handler)

mouse發送接收數據處理修改

IN數據處理(class_in_handler)

OUT數據處理(class_out_handler)

根據需求修改端點FIFO大小分配(usb_conf.h)

修改數據處理部分

msc例程

msc(mass storage)例程展示如何通過USB BULK傳輸,進行PC主機和AT-START通信,該例程支持BOT(Bulk only transfer)協議和SCSI(small computer system interface)指令。圖17. BOT 命令/數據/狀態 流程cc38d8c8-b1f4-11ed-ad0d-dac502259ad0.png圖18.BOT命令格式cc5be156-b1f4-11ed-ad0d-dac502259ad0.png圖19.BOT狀態格式cc90e504-b1f4-11ed-ad0d-dac502259ad0.png實現功能

將內部FLASH虛擬成一個磁盤

實現bulk-only傳輸協議

實現subclass SCSI傳輸命令

MSC_CMD_INQUIRY

MSC_CMD_START_STOP

MSC_CMD_MODE_SENSE6

MSC_CMD_MODE_SENSE10

MSC_CMD_ALLOW_MEDIUM_REMOVAL

MSC_CMD_READ_10

MSC_CMD_READ_CAPACITY

MSC_CMD_REQUEST_SENSE

MSC_CMD_TEST_UNIT

MSC_CMD_VERIFY

MSC_CMD_WRITE_10

MSC_CMD_READ_FORMAT_CAPACITY

外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉

端點1 IN:用于數據發送

端點1 OUT:用于數據接收

msc設備實現1. 設備描述:(msc_desc.c/h)

msc設備描述(g_usbd_descriptor)

msc設備配置描述(g_usbd_configuration)

msc interface

msc endpoint

Lang id(g_string_lang_id)

序列號(g_string_serial)

廠商產品ID(custom_hid_desc.h)

ccae8050-b1f4-11ed-ad0d-dac502259ad0.png

制造商、產品名、配置描述、接口描述(msc_desc.h)

ccd18cbc-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理部分(msc_class.c/h)

端點初始化(class_init_handler)

ccf63198-b1f4-11ed-ad0d-dac502259ad0.png

端點清除(class_clear_handler)

cd218ea6-b1f4-11ed-ad0d-dac502259ad0.png

MSC設備請求(class_setup_handler)

GET_MAX_LUN

BO_RESET

代碼如下:

cd48068a-b1f4-11ed-ad0d-dac502259ad0.png

IN傳輸處理

cd6ef290-b1f4-11ed-ad0d-dac502259ad0.png

OUT傳輸處理(接收數據)

cd91b73a-b1f4-11ed-ad0d-dac502259ad0.png

3. BOT和SCSI命令處理Bulk-only transfer和SCSI的命令處理在庫文件msc_bot_scsi.c/h中。表11.msc_bot_scsi函數列表cdb239a6-b1f4-11ed-ad0d-dac502259ad0.png4. diskio處理此部分主要處理與存儲設備間接口,例程里面以內部flash的存儲控制作為說明,msc_diskio.c/h根據開發者使用存儲不同,只需要實現對應存儲的讀寫函數即可。表12.inquiry描述cde13896-b1f4-11ed-ad0d-dac502259ad0.png表13 diskio操作函數ce126f42-b1f4-11ed-ad0d-dac502259ad0.png如何根據msc例程進行開發本章將簡單描述如何修改msc例程的代碼來進行開發,根據應用具體的需求來修改代碼。

根據功能需求修改設備描述信息(msc_desc.c, msc_desc.h)

設備描述信息(g_usbd_descriptor)

設備配置描述信息(g_usbd_configuration)

其它描述

根據功能修改要使用端點(msc_class.c, msc_class.h)

端點定義(msc_class.h)

端點初始化(class_init_handler,class_clear_handler)

修改使用的msc控制請求

控制請求修改(class_setup_handler)

控制請求設置處理(class_ept0_rx_handler)

msc發送接收數據處理修改

IN數據處理(class_in_handler)

OUT數據處理(class_out_handler)

根據需求修改端點FIFO大小分配(usb_conf.h)

修改diskio部分,實現表13里面的函數(msc_diskio.c/h)

printer例程

Printer例程展示了使用USB Device作為打印機設備,此demo可在PC端識別到一個打印機設備并且可應答PC端發送的關于printer類的狀態請求命令(例如打印機的有紙/無紙狀態)
實現功能

實現一個打印機設備

外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉

端點1 IN:用于數據發送

端點1 OUT:用于數據接收

printer設備實現1. 設備描述(printer_desc.c/h)

printer設備描述(g_usbd_descriptor)

printer設備配置描述(g_usbd_configuration)

printer interface

printer endpoint

Lang id(g_string_lang_id)

序列號(g_string_serial)

廠商產品ID(custom_hid_desc.h)

ce3e2e48-b1f4-11ed-ad0d-dac502259ad0.png

制造商、產品名、配置描述、接口描述(msc_desc.h)

ce57c0ba-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理(printer_class.c/h)

端點初始化(class_init_handler)

ce75f6fc-b1f4-11ed-ad0d-dac502259ad0.png

端點清除(class_clear_handler)

ce9a5f4c-b1f4-11ed-ad0d-dac502259ad0.png

printer設備請求(class_setup_handler)

GET_DEVICE_ID

PORT_STATUS

SOFT_RESET

代碼如下:

cebde00c-b1f4-11ed-ad0d-dac502259ad0.png

IN傳輸處理

cf25460c-b1f4-11ed-ad0d-dac502259ad0.png

OUT傳輸處理(接收數據)

cf3f0e7a-b1f4-11ed-ad0d-dac502259ad0.png

如何根據printer例程進行開發本章將簡單描述如何修改printer例程的代碼來進行開發,根據應用具體的需求來修改代碼。

根據功能需求修改設備描述信息(printer_desc.c, printer_desc.h)

設備描述信息(g_usbd_descriptor)

設備配置描述信息(g_usbd_configuration)

其它描述

根據功能修改要使用端點(printer_class.c, printer_class.h)

端點定義(printer_class.h)

端點初始化(class_init_handler,class_clear_handler)

修改使用的printer控制請求

控制請求修改(class_setup_handler)

控制請求設置處理(class_ept0_rx_handler)

printer發送接收數據處理修改

IN數據處理(class_in_handler)

OUT數據處理(class_out_handler)

根據需求修改端點FIFO大小分配(usb_conf.h)

vcp loopback例程

在現代PC中,USB是和絕大部分外設通信的標準接口。盡管如此,大部分的工業軟件依舊使用COM接口(UART)通信。vcp_loopback例程提供使用USB設備模擬COM接口方法,解決了該問題, vcp_loopback例程展示了如何通過CDC協議進行USB數據收發。改例程需要使用虛擬串口驅動,可在官網下載。實現功能

實現一個虛擬串口

外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉

端點1 IN:用于數據發送

端點1 OUT:用于數據接收

端點2 IN:監控中斷傳輸

vcp_loopback設備實現1. 設備描述(cdc_desc.c/h)

cdc設備描述(g_usbd_descriptor)

cdc設備配置描述(g_usbd_configuration)

cdc interface

cdc endpoint

Lang id(g_string_lang_id)

序列號(g_string_serial)

廠商產品ID(custom_hid_desc.h)

cf5e014a-b1f4-11ed-ad0d-dac502259ad0.png

制造商、產品名、配置描述、接口描述(msc_desc.h)

cf7c2c06-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理(cdc_class.c/h)

端點初始化(class_init_handler)

cf9efd26-b1f4-11ed-ad0d-dac502259ad0.png

端點清除(class_clear_handler)

cfcef0a8-b1f4-11ed-ad0d-dac502259ad0.png

cdc設備請求(class_setup_handler)

SET_LINE_CODING

GET_LINE_CODING

代碼如下:

cff39278-b1f4-11ed-ad0d-dac502259ad0.png

IN傳輸處理

d039790a-b1f4-11ed-ad0d-dac502259ad0.png

OUT傳輸處理(接收數據)

d06695fc-b1f4-11ed-ad0d-dac502259ad0.png

如何根據vcp_loopback例程進行開發本章將簡單描述如何修改cdc例程的代碼來進行開發,根據應用具體的需求來修改代碼。

根據功能需求修改設備描述信息(cdc_desc.c, cdc_desc.h)

設備描述信息(g_usbd_descriptor)

設備配置描述信息(g_usbd_configuration)

其它描述

根據功能修改要使用端點(cdc_class.c, cdc_class.h)

端點定義(cdc_class.h)

端點初始化(class_init_handler,class_clear_handler)

修改使用的cdc控制請求

控制請求修改(class_setup_handler)

控制請求設置處理(class_ept0_rx_handler)

cdc發送接收數據處理修改

IN數據處理(class_in_handler)

OUT數據處理(class_out_handler)

根據需求修改端點FIFO大小分配(usb_conf.h)

virtual_msc_iap例程

virtual msc iap實現一個升級功能的設備,不依賴上位機,當接入PC之后,通過將固件拷貝到磁盤以達到升級目的。實現功能

將flash虛擬成磁盤進行升級

Iap保留使用20K byte空間

升級完成之后reset usb設備返回升級狀態

支持下載地址設置

支持升級完成之后跳轉到APP運行

支持bin文件升級

外設資源使用USB外設:

端點0 IN/OUT:用于USB枚舉

端點1 IN:用于數據發送

端點1 OUT:用于數據接收

virtual_msc_iap設備實現1. 設備描述(msc_desc.c/h)參考3.5.3.12. 數據處理部分(msc_class.c/h)參考3.5.3.23. BOT和SCSI命令處理參考3.5.3.34. diskio處理參考3.5.3.45. flash升級部分(flash_fat16.c/h)

升級狀態

d095113e-b1f4-11ed-ad0d-dac502259ad0.png

當連接Host之后,在響應磁盤上通過TXT文檔顯示當前狀態

準備升級狀態(Ready.TXT)

升級成功(Success.TXT)

升級失?。‵ailed.TXT)

未知文件或錯誤(Unkonwn.TXT)

升級文件大于FLASH大小(Large.TXT)

FAT16分區表描述

  • d0bde7da-b1f4-11ed-ad0d-dac502259ad0.png
  • 升級接口函數d102c620-b1f4-11ed-ad0d-dac502259ad0.png

如何根據virtual_msc_iap例程進行開發本章將簡單描述如何修改virtual_msc_iap例程的代碼來進行開發,根據應用具體的需求來修改代碼。

  • 根據功能需求修改設備描述信息(msc_desc.c, msc_desc.h)設備描述信息(g_usbd_descriptor)設備配置描述信息(g_usbd_configuration)其它描述
  • 根據功能修改要使用端點(msc_class.c, msc_class.h)端點定義(msc_class.h)端點初始化(class_init_handler,class_clear_handler)
  • 修改使用的msc控制請求控制請求修改(class_setup_handler)控制請求設置處理(class_ept0_rx_handler)
  • msc發送接收數據處理修改IN數據處理(class_in_handler)OUT數據處理(class_out_handler)
  • 根據需求修改端點FIFO大小分配(usb_conf.h)
  • 修改diskio部分,實現表13里面的函數(msc_diskio.c/h)
  • 修改flash_fat16.c/h升級參數,包括APP起始地址,IAP占用空間等,要保證IAP和APP地址不重合。

composive_vcp_keyboard例程

復合設備定義如下:擁有多個相互獨立接口的設備被稱為復合設備。當使用該設備時,該設備上擁有多個組合的功能。例如,Composite vcp keyboard demo 提供的復合設備包含HID和CDC功能(鍵盤和串口通信)實現功能

  • 實現一個USB虛擬串口(參考3.7)
  • 實現一個USB鍵盤設備(參考3.3)

外設資源使用USB外設:

  • 端點0 IN/OUT:用于USB枚舉
  • 端點1 IN:用于數據發送
  • 端點1 OUT:用于數據接收
  • 端點2 IN:CDC命令中斷傳輸
  • 端點3 IN:Keyboard發送數據

composite_vcp_keyboard設備實現1. 設備描述(cdc_keyboard_desc.c/h)

  • cdc_keyboard設備描述(g_usbd_descriptor)
  • cdc_keyboard設備配置描述(g_usbd_configuration)cdc interfacecdc endpointkeyboard interfacekeyboard endpoint
  • Lang id(g_string_lang_id)
  • 序列號(g_string_serial)
  • 廠商產品ID(custom_hid_desc.h)d1214078-b1f4-11ed-ad0d-dac502259ad0.png
  • 制造商、產品名、配置描述、接口描述(msc_desc.h)d13f9eb0-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理(cdc_keyboard_class.c/h)

  • 端點初始化(class_init_handler)d165d8be-b1f4-11ed-ad0d-dac502259ad0.png
  • 端點清除(class_clear_handler)d197f04c-b1f4-11ed-ad0d-dac502259ad0.png
  • 設備請求(class_setup_handler)cdc設備類請求:SET_LINE_CODINGGET_LINE_CODIN

Keyboard hid設備類請求:

  • SET_PROTOCOLGET_PROTOCOLSET_IDLEGET_IDLESET_REPORT

代碼如下:

  • d1b97776-b1f4-11ed-ad0d-dac502259ad0.png
  • IN傳輸處理d1e20146-b1f4-11ed-ad0d-dac502259ad0.png
  • OUT傳輸處理(接收數據)d20de086-b1f4-11ed-ad0d-dac502259ad0.png

如何根據composite_vcp_keyboard例程進行開發本章將簡單描述如何修改composite_vcp_keyboard例程的代碼來進行復合設備開發,根據應用具體的需求來修改代碼。

  • 根據功能需求修改設備描述信息(cdc_keyboard_desc.c, cdc_keyboard_desc.h)設備描述信息(g_usbd_descriptor)設備配置描述信息(g_usbd_configuration)其它描述
  • 根據功能修改要使用端點(cdc_keyboard_class.c, cdc_keyboard_class.h)端點定義(cdc_class.h)端點初始化(class_init_handler,class_clear_handler)
  • 修改使用的cdc控制請求控制請求修改(class_setup_handler)控制請求設置處理(class_ept0_rx_handler)
  • cdc_keyboard發送接收數據處理修改IN數據處理(class_in_handler)OUT數據處理(class_out_handler)
  • 根據需求修改端點FIFO大小分配(usb_conf.h)

hid_iap例程

hid_iap例程使用usb hid實現IAP升級功能,需要搭配上位機使用,上位機可在官網下載IAP_Programmer。hid iap的例程代碼位于BSP固件庫utilities\at32f435_437_usb_iap_demo中,使用方法可參考《AN0007_AT32_IAP_using_the_USB_HID_ZH_V2.x.x.pdf》1. 實現功能

  • 實現使用HID進行設備升級

2. 外設資源使用USB 外設:

  • 端點0 IN/OUT:用于USB枚舉
  • 端點1 IN:用于數據發送
  • 端點1 OUT:用于數據接收

hid_iap設備實現1. 設備描述(hid_iap_desc.c/h)

  • hid iap設備描述(g_usbd_descriptor)
  • hid iap設備配置描述(g_usbd_configuration)HID interfaceHID Endpoint
  • hid iap report描述(g_usbd_hid_report)
  • Lang id(g_string_lang_id)
  • 序列號(g_string_serial)
  • 廠商產品ID(hid_iap_desc.h)d2383d4a-b1f4-11ed-ad0d-dac502259ad0.png
  • 制造商、產品名、配置描述、接口描述(hid_iap_desc.h)d258ae04-b1f4-11ed-ad0d-dac502259ad0.png

2. 數據處理(hid_iap_class.c/h)

  • 端點初始化(class_init_handler)d27fbf58-b1f4-11ed-ad0d-dac502259ad0.png
  • 端點清除(class_clear_handler)d2a77732-b1f4-11ed-ad0d-dac502259ad0.png
  • HID設備類請求(class_setup_handler)實現如下請求:SET_PROTOCOLGET_PROTOCOLSET_IDLEGET_IDLESET_REPORT代碼如下:d2ca1170-b1f4-11ed-ad0d-dac502259ad0.png
  • hid iap發送數據d2f8f21a-b1f4-11ed-ad0d-dac502259ad0.png
  • hid iap接收數據d32c8eb8-b1f4-11ed-ad0d-dac502259ad0.png
  • 升級命令數據處理d350eb8c-b1f4-11ed-ad0d-dac502259ad0.png

3. hid iap升級協議表14.hid iap升級命令d3876b08-b1f4-11ed-ad0d-dac502259ad0.png

0x5AA0進入IAP模式

作為一個特定的命令,當用戶APP收到這個命令之后將進入IAP模式。實現方式為收到這個命令之后擦除flag然后reset

上位機:[0x5A, 0xA0]

IAP設備響應:[0x5A, 0XA0, ACK/NACK]

0x5AA1開始下載

上位機:[0x5A,0xA1]

IAP設備響應:[0x5A,0xA1,ACK/NACK]

0x5AA2設置下載地址

設置下載地址需按照1KB對齊,每下載1Kbyte數據之后,都需要重新設置下載地址。

上位機(命令+地址):[0x5A, 0xA2, 0x08, 0x00, 0x40, 0x00]

IAP設備響應:[0x5A,0xA2, ACK/NACK]

0x5AA3下載數據命令(1KB 對齊多個包發送)

下載數據命令采用命令+長度+數據的格式進行發送,每包最大數據量為60Byte(64–命令–長度),當發送數據達到1KB時,上位機需要等待設備的ACK響應。此時設備需將1KB的數據寫到FLASH。

上位機(命令(2Byte)+長度(2 Byte)+數據(n byte)):[0x5A,0xA3,LEN1,LEN0,DATA0….DATAn]

收完1KB數據后IAP設備響應:[0x5A, 0XA3, ACK/NACK]

0x5AA4下載結束

上位機:[0x5A, 0xA4]

IAP設備響應:[0x5A, 0xA4, ACK/NACK]

0x5AA5固件CRC校驗

上位機傳輸固件起始地址和固件大小/1KB(固件大小按1KB對齊,不足補0xFF),由IAP計算CRC之后返回給上位機。

上位機:[0x5A,0xA5, 0x08, 0x00, 0x40, 0x00, LEN1, LEN0]

IAP設備響應: [0x5A, 0xA5, ACK/NACK, CRC3, CRC2, CRC1, CRC0]

0x5AA6跳轉命令

跳轉命令將跳轉到用戶代碼進行運行

上位機:[0x5A,0xA6, 0x08, 0x00, 0x40, 0x00]

IAP設備響應:[0x5A,0xA6,ACK/NACK]

0x5AA7獲取IAP設置的app地址

返回IAP設置的app地址

上位機:[0x5A, 0xA7]

IAP設備響應:[0x5A, 0xA7, ACK/NACK, 0x08, 0x00, 0x40, 0x00]

如何根據hid_iap例程進行開發本章將簡單描述如何修改hid_iap例程的代碼來進行開發,根據應用具體的需求來修改代碼。

  • 根據功能需求修改設備描述信息(hid_iap_desc.c, hid_iap_desc.h)設備描述信息(g_usbd_descriptor)設備配置描述信息(g_usbd_configuration)其它描述
  • 根據功能修改要使用端點(hid_iap_class.c, hid_iap_class.h)端點定義(hid_iap_class.h)端點初始化(class_init_handler,class_clear_handler)
  • 修改使用的hid控制請求控制請求修改(class_setup_handler)控制請求設置處理(class_ept0_rx_handler)
  • hid_iap發送接收數據處理修改IN數據處理(class_in_handler)OUT數據處理(class_out_handler)
  • 根據需求修改端點FIFO大小分配(usb_conf.h)
  • 修改hid_iap_user.h中的升級參數,包括APP起始地址等,IAP占用空間等,保證APP地址和IAP的地址不要重合。

關于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創新趨勢的芯片設計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發與創新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內核,締造M4業界最高主頻288MHz運算效能,并支持工業級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當多元的終端產品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業縫紉機、伺服驅控、電競周邊市場、斷路器、ADAS、T-BOX、數字電源、電動工具等終端設備應用,廣泛地覆蓋5G、物聯網、消費、商務及工控等領域。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17317

    瀏覽量

    352630
  • AT32
    +關注

    關注

    1

    文章

    118

    瀏覽量

    2164
收藏 人收藏

    評論

    相關推薦

    發布高性能電機控制專用MCU

    近日,科技正式推出了其首款高性能電機控制專用MCU——AT32M412/M416。這款MCU專為出行工具、家電及工業控制等應用而設計,
    的頭像 發表于 11-01 18:11 ?959次閱讀

    AT32講堂088 | AT32F402/F405時鐘配置

    介紹如何結合提供的V2.x.x的板級支持包(BSP)來配置時鐘。以下介紹時鐘配置的方法主要分兩種:1、以手動編寫代碼調用BSP中提供的驅動函數接口來進行時鐘配
    的頭像 發表于 09-15 08:08 ?607次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>088 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F402/F405時鐘配置

    AT32講堂087 | AT32 IDE快速入門指南

    新建項目新項目向導AT32ID提供支持MCU的C語言項目模板,方便用戶快速創建項目。菜單欄【File】>【New】>【CProject】。新建項目向導的對話框將出現。在對
    的頭像 發表于 09-15 08:08 ?555次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>087 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> IDE快速入門指南

    AT32 MCU的隨機數生成

    應用的需求。底下提供兩種方法:提高亂度的方法之一,使用ADC的誤差。AT32的微控制器內置最多三個高級12位片上SAR模擬數字轉換器(ADC)并提供自校準功能,保證1
    的頭像 發表于 08-30 12:26 ?707次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的隨機數生成

    AT32講堂085 | AT32 MCU HICK時鐘校準

    簡介AT32系列MCU內部都有提供適合運行的內部高速時鐘(HICK),其本質就是內置于芯片的RC振蕩器。在25℃下,其典型值頻率8MHz的精度由工廠校準到±1%,在-40到105℃,該內部高速時鐘
    的頭像 發表于 08-30 12:26 ?831次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>085 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK時鐘校準

    攜多款AT32 MCU新品與應用方案亮相2024慕尼黑上海電子展

    7月8日,2024慕尼黑上海電子展electronicaChina在上海新國際博覽中心拉開序幕,作為全球電子行業的盛會,匯聚了國內外眾多優質電子企業,為業界呈現一場前所未有的科技盛宴。攜高性能
    的頭像 發表于 07-09 08:15 ?731次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>攜多款<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>新品與應用方案亮相2024慕尼黑上海電子展

    如何在AT32 MCU上創建IAP應用程序

    概述AT32CANIAP快速使用方法使用CAN進行IAP升級,此示例使用PC上位軟件(IAP_Programmer.exe)通過一個USB轉CAN的橋接設備和目標板進行通信,IAPDemo和橋接
    的頭像 發表于 05-20 08:15 ?1227次閱讀
    如何在<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>上創建IAP應用程序

    AT32 MCU通過IEC 60730功能安全認證,為家電產品提供安全保障

    ??近日,AT32MCU安全順利通過IEC60730功能安全認證,為家電產品提供安全質量保證。國際公認的測試、檢驗和認證機構SGS為
    的頭像 發表于 05-20 08:15 ?630次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>通過IEC 60730功能安全認證,為家電產品提供安全保障

    發布全新車載型AT32A423系列MCU

    近日發布了全新車載型AT32A423系列MCU,該產品基于ARM?Cortex?-M4內核設計,集成了豐富的外設資源,展現了高效能與多尺寸封裝的雙重優勢。
    的頭像 發表于 05-17 10:38 ?691次閱讀

    AT32F423入門使用指南

    初步環境準備開發環境下載地址:
    的頭像 發表于 05-14 08:15 ?1774次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F423入門使用指南

    AT32F405高速USB MCU榮獲“年度最佳MCU

    設計Fabless100排行榜也在同期舉行的中國IC領袖峰會發布,AT32F405榮獲“中國IC設計成就獎之年度最佳MCU”。年度最佳MCU
    的頭像 發表于 03-30 08:13 ?1030次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F405高速<b class='flag-5'>USB</b> <b class='flag-5'>MCU</b>榮獲“年度最佳<b class='flag-5'>MCU</b>”

    AT32 MCU與SEGGER攜手合作,開發量產事半功倍

    近日,與SEGGER共同宣布J-Link仿真調試器與Flasher在線燒錄器全面支持AT32 MCU產品,SEGGER工具鏈的加持使
    的頭像 發表于 02-23 10:27 ?459次閱讀

    AT32 MCU與SEGGER攜手合作,開發量產事半功倍

    近日,與SEGGER共同宣布J-Link仿真調試器與Flasher在線燒錄器全面支持AT32MCU產品,SEGGER工具鏈的加持使AT32MC
    的頭像 發表于 02-22 08:13 ?535次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>與SEGGER攜手合作,開發量產事半功倍

    AT32F423時鐘配置

    介紹如何結合提供的V2.x.x的板級支持包(BSP)來配置時鐘。以下介紹時鐘配置的方法主要分兩種:1、以手動編寫代碼調用BSP中提供的驅動函數接口來進行時鐘配
    的頭像 發表于 02-19 13:26 ?682次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F423時鐘配置

    AT32 Workbench圖形化代碼生成工具,簡化嵌入式開發最佳利器

    嵌入式系統應用市場廣泛,早已遍及日常生活,隨著產品需求復雜度的提升,32位MCU開發難度也隨之增加,如何降低開發成本,縮短開發周期,是所有嵌入式開發人員的共同課題。面對市場競爭日益加劇的情形,
    的頭像 發表于 02-19 13:26 ?635次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> Workbench圖形化代碼生成工具,簡化嵌入式開發最佳利器
    皇城百家乐娱乐城| 24山风水真龙图| bet365论坛| 百家乐起步多少| 百家乐官网玩法秘决| 中骏百家乐的玩法技巧和规则| 狮威百家乐官网娱乐网| 六合彩查询| 百家乐赌博玩法技巧| 尊龙百家乐官网娱乐场| 皇家赌场007| 百家乐作弊演示| 同乐城百家乐官网现金网| 大发888最新官方网址| 百家乐大小是什么| 网上百家乐官网洗码技巧| 大发888娱乐城m88| 百家乐轮盘桌| 赌场百家乐官网赌场| 豪盈国际娱乐| 伯爵百家乐赌场娱乐网规则 | 跨国际百家乐官网的玩法技巧和规则| 即时比分直播| 百家乐网上真钱赌场娱乐网规则| 百家乐官网现金网最好的系统哪里有可靠吗| 建水县| 大发888官网多少| 百家乐有多少网址| 百家乐官网赌钱| 大家旺娱乐| 太阳城宾馆| 百家乐庄闲局部失衡| 百家乐官网筹码桌| 东安县| 大发888娱乐城dafa888dafa8| 百家乐5式直缆投注法| 赌场百家乐官网图片| 网上百家乐官网有假的吗| 博彩吧| 太阳城娱乐网可信吗| 百家乐英皇娱乐网|