Linux串列埠ttyUSB設定

2021-09-25 09:14:58 字數 3362 閱讀 3906

4 波特率等引數設定

5 確定有效埠

6 生成固定usb轉串列埠裝置節點

7 通訊

8 linux裝置和驅動載入的先後順序

參考控制板改版,之前電路中直接從工控機主機板引腳中連出com口(ttys),現在在ft4232h(配置ttl)之後又連線了adm3232earuz(ttl轉rs232)需要使用usb轉串列埠(ttyusb)

com口 即 序列通訊埠,簡稱 串列埠。這裡區別於 usb的「通用序列匯流排」和「sata」序列硬碟

一般我們見到的是兩種物理形式。d型9針插頭(db9)和 4針杜邦頭 兩種,早年的25針串列埠已被淘汰

四針分別為:gnd、tx、rx、vcc。其中gnd可以通過焊盤接地判斷出來,而vcc一般走線稍粗些。由於是預留在電路板上的,協議可以有很多種,要看具體裝置。

db9介面的協議常用的只有三種:rs-232、rs-485和rs-422。絕不會是ttl電平,80%的可能性是rs-232

db9 公頭母頭引腳定義及連線

stty -f /dev/ttys0 -a  #ttys0為要檢視的串列埠
stty -f /dev/ttys0 ispeed 115200 ospeed 115200 cs8
該命令將串列埠1(/dev/ttys0)設定成115200波特率,8位資料模式。一般情況下設定這兩個引數就可以了,如果顯示資料亂碼,可能還需要設定其它引數,使用man檢視stty其它設定選項。

# cat /dev/ttys0 &

# echo testserialcharstring > /dev/ttys0

echo "worthsen" > /dev/ttyusb1
使用 dmsg 命令檢視

每個usb埠都有唯一的埠號

(1)按照資料傳輸方式分為單工、半雙工、全雙工

(2)序列通訊的通訊方式:

對於不同平台或者使用環境,訊號管腳的電氣特性依次可以分為ttl/cmos、rs232、rs422、rs485

1 動態載入

動態載入是將驅動模組載入到內 核中,而不能放入/lib/modules/下。

在2.4核心中,載入驅動命令為:insmod ,刪除模組為:rmmod;

在2.6以上核心中,除了insmod與rmmod外,載入命令還有modprobe;

insmod與modprobe不同之處:

insmod 絕對路徑/××.o,而modprobe ××即可,不用加.ko或.o字尾,也不用加路徑;最重要的一點是:modprobe同時會載入當前模組所依賴的其它模組;

lsmod檢視當前載入到核心中的所有驅動模組,同時提供其它一些資訊,比如其它模組是否在使用另乙個模組。

2 靜態載入

2.1 概念

在執行make menuconfig命令進行核心配置裁剪時,在視窗中可以選擇是否編譯入核心,還是放入/lib/modules/下相應核心版本目錄中,還是不選。

2.2 操作步驟

linux裝置一般分為:字元裝置、塊裝置和網路裝置,每種裝置在核心源**目錄樹drivers/下都有對應的目錄,其載入方法類似,以下以字元裝置靜 態載入為例,假設驅動程式源**名為ledc.c,具體操作步驟如下:

第一步:將ledc.c源程式放入核心原始碼drivers/char/下;

第二步:修改drivers/char/config.in檔案,具體修改如下:

按照開啟檔案中的格式新增即可;

在檔案的適當位置(這個位置隨便都可以,但這個位置決定其在make menuconfig視窗中所在位置)加入以下任一段**:

tristate 'leddriver' config_ledc

if [ "$config_ledc" = "y" ];then

bool ' support for led on h9200 board' config_ledc_console

fi說明:以上**使用tristate來定義乙個巨集,表示此驅動可以直接編譯至核心(用*選擇),

也可以編制至/lib/modules/下(用m選擇), 或者不編譯(不選)。

bool 'leddriver' config_ledc

if [ "$config_ledc" = "y" ];then

bool ' support for led on h9200 board' config_ledc_console

fi

說明:以上**使用tristate來定義乙個巨集,表示此驅動只能直接編譯至核心(用*選擇)或者不編譯(不選),不能編制至/lib/modules/ 下(用m選擇)。

第三步:修改drivers/char/makefile檔案

在適當位置加入下面一行**:

obj-$(config_ledc) += ledc.o

或者在obj-y一行中加入ledc.o,如:

obj-y += ledc.o mem.o 後面不變;

ok,經過以上的設定就可以在執行make menuconfig命令後的視窗中的character devices—> 中進行選擇配置了。選擇後重新編譯就ok了。

1、/dev/tty、/dev/ttys/、/dev/ttyusb區別

2、usb和串列埠(com)的區別,以及相互轉換

3、db9 公頭母頭引腳定義及連線

4、ft4232h

5、ttl和rs232之間的詳細對比

6、linux下/dev/tty, /dev/tty0, /dev/console區別

7、linux裝置和驅動載入的先後順序

8、從需求的角度去理解linux系列:匯流排、裝置和驅動

9、解決linux下usb裝置節點ttyusb名不固定的問題,生成固定usb轉串列埠裝置節點

10、linux檢視某串列埠(或串列埠終端)的波特率等屬性

11、linux 串列埠/dev/ttys0測試(uart0)

12、stm32f407–序列通訊的原理

13、嵌入式硬體通訊介面協議-uart(二)不同電氣規範下的標準

linux 串列埠設定流程

串列埠設定主要是設定struct termios結構體成員值 include struct termio 通過對c cflag的賦值,可以設定波特率 字元大小 資料位 停止位 奇偶校驗位和硬體流控等。1.儲存原先串列埠配置 為了安全起見和以後除錯程式方便,可先儲存原先串列埠的配置,使用函式tcget...

Linux串列埠的設定

設定流控制 termios new.c cflag crtscts 不使用流控制 termios new.c cflag crtscts 使用硬體流控制 termios new.c iflag ixon ixoff ixany 使用軟體流控制 設定資料位大小 termios new.c cflag ...

Linux串列埠設定及程式設計

使用者常見的資料通訊的基本方式可分為並行通訊和序列通訊。並行通訊是指利用多條資料傳輸線將乙個資料的各位同時傳送。特點是傳輸速度快,適用於短距離通訊,但要求傳輸速度較高的應用場合。序列通訊是指利用一條傳輸線將資料一位位的順序傳送。特點是通訊線路簡單,利用簡單的線纜就可以實現通訊,減低成本,適用於遠距離...