Firefly-RK3128 開發(fā)板內(nèi)置 3 路 UART,分別為 uart0,uart1,uart2。uart0 用于藍(lán)牙數(shù)據(jù)傳輸,如果要使用 uart0,必須關(guān)掉藍(lán)牙,才可以使用擴(kuò)展槽上的 UART0 針腳。uart1, 因為存在以下復(fù)用:
- BT_HOST_WAKE/SPI_TXD/UART1_TX
- BT_WAKE/SPI_RXD/UART1_RX
- WIFI_REG_ON/SPI_CSN0/UART1_RTS
若要使用 uart1, 必須關(guān)掉藍(lán)牙和 SPI 功能,這樣才可以使用擴(kuò)展槽上的 SPI_RX 和 SPI_TX 針作 UART1_RX 和 UART1_TX 使用。uart2 一般用做調(diào)試串口,但同樣存在復(fù)用,也就是說 TF 卡與調(diào)試串口不可以同時使用:
- SDMMC_D0/UART2_TX
- SDMMC_D1/UART2_RX
uart1 和 uart2 有 32 字節(jié)的 FIFO 收發(fā)緩沖區(qū),uart0 則要有雙 64 字節(jié)的 FIFO 用作藍(lán)牙數(shù)據(jù)收發(fā)。所有 uart 均支持 5 位、6 位、7 位、8 位數(shù)據(jù)收發(fā)和 DMA 操作。
文件 kernel/arch/arm/boot/dts/rk312x.dtsi 中已經(jīng)有 uart 相關(guān)節(jié)點定義,如下所示:
uart0: serial@20060000 { compatible = "rockchip,serial"; reg = <0x20060000 0x100>; interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <24000000>; clocks = <&clk_uart0>, <&clk_gates8 0>; clock-names = "sclk_uart", "pclk_uart"; reg-shift = <2>; reg-io-width = <4>; dmas = <&pdma 2>, <&pdma 3>;#dma-cells = <2>; pinctrl-names = "default"; pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; status = "disabled"; }; uart1: serial@20064000 { compatible = "rockchip,serial"; reg = <0x20064000 0x100>; interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <24000000>; clocks = <&clk_uart1>, <&clk_gates8 1>; clock-names = "sclk_uart", "pclk_uart"; reg-shift = <2>; reg-io-width = <4>; dmas = <&pdma 4>, <&pdma 5>;#dma-cells = <2>; pinctrl-names = "default"; pinctrl-0 = <&uart1_xfer &uart1_cts &uart1_rts>; status = "disabled"; };
用戶只需在 kernel/arch/arm/boot/dts/rk3128-fireprime.dts 文件中打開 uart0 ,并關(guān)掉藍(lán)牙,如下所示:
&uart0 { status = "okay"; dma-names = "!tx", "!rx"; pinctrl-0 = <&uart0_xfer &uart0_cts>;}; wireless-bluetooth { compatible = "bluetooth-platdata"; ... status = "disabled"; };
用戶只需在 kernel/arch/arm/boot/dts/rk3128-fireprime.dts 文件中打開 uart1 ,并關(guān)掉藍(lán)牙和 SPI,如下所示:
//... wireless-bluetooth { compatible = "bluetooth-platdata"; ... status = "disabled"; };//... &spi0 { status = "disabled"; }; &uart1 { status = "okay"; dma-names = "!tx", "!rx"; pinctrl-0 = <&uart1_xfer &uart1_cts>; };
將串口驅(qū)動編譯到內(nèi)核中,在 kernel 目錄下執(zhí)行如下命令:
make firefly_defconfig make rk3128-fireprime.img -j4
把 kernel 目錄下生成的 kernel.img 和 resource.img 燒錄到開發(fā)板中即可。
配置好串口后,用戶可以通過主機(jī)的 USB 轉(zhuǎn)串口適配器向開發(fā)板的串口收發(fā)數(shù)據(jù),以 uart0 為例,步驟如下:
將開發(fā)板 uart0 的 TX、RX、GND 引腳分別和主機(jī)串口適配器的 RX、TX、GND 引腳相連。注意:如果是使用 Firefly 的串口適配器,則是 TX 對 TX,RX 對 RX 連接。
在終端打開 kermit,并設(shè)置波特率:
$ sudo kermit C-Kermit> set line /dev/ttyUSB0 C-Kermit> set speed 9600 C-Kermit> set flow-control none C-Kermit> connect
- /dev/ttyUSB0 為 USB 轉(zhuǎn)串口適配器的設(shè)備文件
- uart0 的波特率默認(rèn)為 9600
uart0 的設(shè)備文件為 /dev/ttyS0。在設(shè)備上運行下列命令:
echo firefly uart test... > /dev/ttyS0
主機(jī)中的串口終端即可接收到字符串“firefly uart test…”
首先在設(shè)備上運行下列命令:
cat /dev/ttyS0
然后在主機(jī)的串口終端輸入字符串 “Firefly uart test…”,設(shè)備端即可見到相同的字符串。要改變 uart0 的波特率,例如 115200,可以運行以下命令:
stty -F /dev/ttyS0 115200
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6084瀏覽量
35154 -
Firefly
+關(guān)注
關(guān)注
2文章
538瀏覽量
6961
發(fā)布評論請先 登錄
相關(guān)推薦
評論