IMX6ULL 开发板 UART3串口驱动,并与压力传感器通讯,获取压力值

硬件设备:正点原子的IMX6U-ALPHA开发板;薄膜压力传感器。

第一部分:添加设备树
首先:因为 I.MX6U 的 UART 驱动 NXP 已经编写好了,我们只需在设备树中添加 UART3 对应的设备节点即可。

/*在iomuxc中增加pinctrl节点,并保证两引脚没有被其他功能所占用*/
&iomuxc {
	……
	pinctrl_uart3:uart3grp{
			fsl,pins = <
				MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX  0x1b0b1
				MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX  0x1b0b1			
			>;

/*添加UART3对应的uart3节点*/
&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart3>;
	status = "okay";
};

此时,重新编译设备树启动Linux,会生成 “/dev/ttymxc2” 的设备文件,这就是 UART3 对应的设备文件,通过访问 ttymxc2 来实现 UART3 的操作。

可以移植 minicom 作为串口调试工具,验证串口的功能,此处省略。

第二部分:Linux下C语言程序,用于驱动 UART3 实现我们想要的功能
本程序的主要目的,是驱动 UART3 与薄膜压力传感器进行通信,薄膜压力传感器说明书上已经定义,使用串口,以ASCII码发送“READ P”用于读取压力值,因此,我们需要驱动串口,发送此命令,并对收到的命令进行解析,返回想要的压力值。
程序分为两部分:一部分实现串口的初始化,包括设置串口的波特率、数据位、校验位、停止位;第二部分驱动串口发送命令,解析命令。

在串口驱动中,需要用到一个重要的结构体 “termios” ,定义在 “termios.h” 中,如下:

struct termios
  {
    tcflag_t c_iflag;		/* input mode flags 输入模式标志位*/
    tcflag_t c_oflag;		/* output mode flags 输出模式标志位*/
    tcflag_t c_cflag;		/* control mode flags 控制模式标志位*/
    tcflag_t c_lflag;		/* local mode flags 本地模式标志位*/
    cc_t c_line;			/* line discipline */
    cc_t c_cc[NCCS];		/* control characters */
    speed_t c_ispeed;		/* input speed */
    speed_t c_ospeed;		/* output speed */
#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
#define _HAVE_
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值