- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个
华力士VAR-SOM-AM33 SOM和开发板(VAR-AM33客户板)
我想让UART3和
Sparkfun FTDI基本分接-3.3V TTL UART到USB适配器(http://sfe.io/p9873)
令人费解的部分总结:我也在研究一个基于这个Variscite开发板的定制SoM载体板,我知道当我切割轨迹并连接我的Sparkfun UART/USB时,UART0工作得非常好。因此,在配置UART0的方式与配置UART3的方式上显然存在差异。
软件
我在很多项目中都使用过这个确切的FTDI USB适配器,它总是很好的工作。下面是我试图在开发板上启用UART3的内容:
用于AM335x的基于TI网络的PinMux配置(http://dev.ti.com/pinmux)
仅带RXD和TXD的UART3
UART引脚
C15是RXD,无拉力(顺便说一句,与UART0不同)
C18是TXD,下拉(顺便说一下,就像UART0一样)
Yocto内核串行驱动程序选择
在徘徊于默认内核串行8250堆栈的巨大性之后,我最终偶然发现了omap-serial.c
驱动程序。我想看看它是否能神奇地解决我的问题,或者至少减少需要筛选的代码(作为一个单独的.c文件)。
所以我将内核(make menuconfig)配置为禁用8250并启用设备驱动程序->字符驱动程序->串行驱动程序中的CONFIG_SERIAL_OMAP。
Yocto内核设备树配置
TI Pinmux生成了这段代码,我将其添加到Yocto环境的内核设备树中:
myuart3_pins_default: myuart3_pins_default {
pinctrl-single,pins = <
0x160 ( PIN_INPUT | MUX_MODE1 ) /* (C15) spi0_cs1.uart3_rxd */
0x164 ( PIN_OUTPUT_PULLDOWN | MUX_MODE1 ) /* (C18) eCAP0_in_PWM0_out.uart3_txd */
>;
};
kernel-source/arch/arm/boot/dts/var-som-am33.dts
时,有一个名为
spi1_pins_default
的SPI设备使用
0x164
pin,所以我也删除了它的条目(在git diff中没有显示)。SPI1在默认情况下不会被使用,但我只是有点偏执。
git diff
:
diff --git a/arch/arm/boot/dts/var-som-am33.dts b/arch/arm/boot/dts/var-som-am33.dts
index 0fdb4e3..05fbd0a 100644
--- a/arch/arm/boot/dts/var-som-am33.dts
+++ b/arch/arm/boot/dts/var-som-am33.dts
@@ -263,6 +263,13 @@
>;
};
+ myuart3_pins_default: myuart3_pins_default {
+ pinctrl-single,pins = <
+ 0x160 ( PIN_INPUT | MUX_MODE1 ) /* (C15) spi0_cs1.uart3_rxd */
+ 0x164 ( PIN_OUTPUT_PULLDOWN | MUX_MODE1 ) /* (C18) eCAP0_in_PWM0_out.uart3_txd */
+ >;
+ };
+
@@ -533,11 +522,8 @@
};
&uart3 {
- /*
- pinctrl-names = "default", "sleep";
- pinctrl-0 = <&uart3_pins_default>;
- pinctrl-1 = <&uart3_pins_sleep>;
- */
+ pinctrl-names = "default";
+ pinctrl-0 = <&myuart3_pins_default>;
status = "okay";
};
yocto_varsomam33/tisdk/build $ MACHINE=varsomam33 bitbake -C compile linux-ti-variscite
root@varsomam33:~# find /sys/firmware/devicetree/ -name "*myuart*"
/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/myuart3_pins_default
root@varsomam33:~# od -x /sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/myuart3_pins_default/pinctrl-single,pins
0000000 0000 6001 0000 2900 0000 6401 0000 0100
0000020
PIN | VALUE
--------|-------
0x0160 | 0x0029
0x0164 | 0x0001
include/dt-bindings/pinctrl/am33xx.h
#define PULL_DISABLE (1 << 3)
#define INPUT_EN (1 << 5)
#define PIN_OUTPUT_PULLDOWN 0
#define MUX_MODE1 1
Carrier board | Sparkfun USB
------------------------|-------------
J18 pin 9 (UART3_RXD) | TXO
J18 pin 10 (UART3_TXD) | RXI
J15 pin 4 (Ground) | GND
newsertio.c_cflag = cooked_baud | CS8 | CLOCAL | CREAD;
root@varsomam33:~# ./miniterm -d/dev/ttyO3
************ REMOTE CONSOLE: CTRL-] TO QUIT ********
# ./miniterm -d/dev/ttyUSB1
************ REMOTE CONSOLE: CTRL-] TO QUIT ********
aaa
root@varsomam33:~# cat /proc/tty/driver/OMAP-SERIAL
serinfo:1.0 driver revision:
0: uart:OMAP UART0 mmio:0x44E09000 irq:155 tx:3080 rx:8 RTS|CTS|DTR|DSR
1: uart:OMAP UART1 mmio:0x48022000 irq:156 tx:0 rx:0 DSR|CD|RI
2: uart:OMAP UART2 mmio:0x48024000 irq:157 tx:0 rx:0 CTS|DSR
3: uart:OMAP UART3 mmio:0x481A6000 irq:158 tx:3 rx:0 CTS|DSR
4: uart:OMAP UART4 mmio:0x481A8000 irq:159 tx:0 rx:0 CTS|DSR
5: uart:OMAP UART5 mmio:0x481AA000 irq:160 tx:0 rx:0 CTS|DSR
Board | UART | Configuration | Result
------------------------------------------------
Variscite | UART0 | RS232 DCE | WORKS
Variscite | UART1 | RS232 DTE | WORKS
Variscite | UART3 | TTL/UART | NO WORK (this is described in this post)
Custom | UART0 | TTL/UART | WORKS
Custom | UART1 | RS232 DTE | WORKS
Custom | UART1 | TTL/UART | NO WORK (used same procedure described in this post)
/proc/tty/driver/OMAP-SERIAL
)
最佳答案
UART3之所以保持高位,是因为它还连接到RS-485芯片(LTC2852)的引脚1。幸运的是,电路板设计人员知道他们在做什么,并在该线路上附加了一个0欧姆的电阻(R83),因此移除它可以释放UART3的RX线路。
至于定制板上的UART1,问题是UART1连接在SoM上,连接到WiFi/Bluetooth芯片。这并不明显,因为Variscite没有发布SoM示意图。然而,他们确实在载波板示意图中有一个模糊的注释“在SOM上未安装蓝牙时启用UART1”。
在载波板上,UART1连接到SN74AVC4T245总线收发器,该收发器通过GPIO打开/关闭。问题是,当与总线收发器接口时,UART1实际上功能完美。因此,在dev承载板上测试,UART1工作得很好,没有人比他更聪明。只有当您卸下总线收发器时,UART1才不工作。
最后,我的唯一结论是,总线收发器可以处理2.5V-3.3V的逻辑电平,而普通的UART设备则不能。
关于linux - UART3 RX在TI Omap AM335x Sitara Variscite开发板上保持高电平(强上拉),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42660197/
我正在考虑为 Freescale Variscite VAR-SOM-MX6 生成我自己的 IMAGE_FSTYPES=sdcard 图像。我已经复制了 meta-fsl-arm/classes/im
我是一名优秀的程序员,十分优秀!