tft每日頭條

 > 生活

 > stm32串口程序開發

stm32串口程序開發

生活 更新时间:2024-12-22 16:08:11

寫在前面:

由于7628的外設支持比較少,所以在開發的時候有時會使用stm32的單片機來進行擴展,這時候就需要使用虛拟usb轉串口功能,而一般自己開發的usb設備在openwrt中是無法識别的,所以我們需要在内核中添加識别代碼。

單片機實現:

stm32官方lib中自帶了使用CDC類實現usb轉串口功能的例子,有興趣的同學可以自己去網上尋找如何實現,本次隻關心如何将他挂載到openwrt上。

如下所示,我們隻需要關心單片機上的vid和pid的值。

#define USBD_VID 0x28E9 #define usbD_PID 0x0180

linux内核添加驅動:

由于内核中已經支持了ACM類的usb轉串口驅動,所以我們不需要自己重新寫驅動代碼,隻需要将我們的設備挂載上去即可。

打開build_dir\target-mipsel_24kec dsp_uClibc-0.9.33.2\linux-ramips_mt7688\linux-3.18.109\drivers\usb\serial\option.c

在option_ids變量中添加我們自己的usb設備的id号;

stm32串口程序開發(openwrt中添加stm32usb虛拟串口)1

效果:

插入usb設備後能夠自動識别,在dev目錄可以看到自動生成了ttyACM0文件;

root@ics:/dev# root@ics:/dev# [ 1176.220000] usb 1-1.3: new full-speed USB device number 13 using ehci-platform [ 1176.390000] cdc_acm 1-1.3:1.0: This device cannot do calls on its own. It is not a modem.[0:0] root@ics:/dev# ls autofs mtd2ro mtdblock4 spidev32766.1 bus mtd3 mtdblock5 tty console mtd3ro mtdblock6 ttyACM0

使用picocom工具可以直接對該串口設備進行操作:

root@ics:/dev# picocom -b 115200 /dev/ttyACM1 port is : /dev/ttyACM1 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 escape is : C-a local echo is : no noinit is : no noreset is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv imap is : omap is : emap is : crcrlf,delbs, Terminal ready d1k1d1j1f1l1s1k1k1d1k1d1k1d1d1l1k1j1;1l1k1j1a1l1k1j

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved