Linux 串口 波特率625000,请教**F1C100S**--- ttyS1\ttyS2----串口配置完打开正常,发送数据接收不到问题...

ttys0作为串口控制台,使用正常,应用程序调用ttyS0也正常, ttyS1\ttyS2应用程序打开正常,发数据没反应

下面是直接通过控制台发数据的测试,

ttyS1\ttyS2,接上CH340插上电脑,发送数据以后没任何反应,收不到任何数据,但是不报错,

ttyS0控制台发送数据以后,可以直接看到数据,发送成功!

ttyS3因为不存在,直接打开错误, ttyS1\ttyS2没报错,说明DTS配置没问题。

倒腾了一天没找到问题,希望各位大神不吝赐教,万分感谢!

# echo uart-test > /dev/ttyS1

# echo uart-test > /dev/ttyS2

# echo uart-test > /dev/ttyS0

uart-test

# echo uart-test > /dev/ttyS3

sh: write error: I/O error

这是配置以后的suniv.dtsi

uart0_pins_a: uart0 {

pins = "PE0", "PE1";

function = "uart0";

bias-pull-up;

};

uart1_pins_a: uart1 {

pins = "PA2", "PA3";

function = "uart1";

bias-pull-up;

};

uart2_pins_a: uart2 {

pins = "PE7", "PE8";

function = "uart2";

bias-pull-up;

};

这是配置以后的suniv-f1c100s-licheepi-nano.dts

&uart0 {

pinctrl-names = "default";

pinctrl-0 = ;

status = "okay";

};

&uart1 {

pinctrl-names = "default";

pinctrl-1 = ;

status = "okay";

};

&uart2 {

pinctrl-names = "default";

pinctrl-2 = ;

status = "okay";

};

这是测试的应用程序,就做了简单的打开串口,发送数据

#include

int fd;

int uart_init()

{

fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY);

struct termios oldtio = { 0 };

struct termios newtio = { 0 };

tcgetattr(fd, &oldtio);

//设置波特率为115200

newtio.c_cflag = B115200 | CS8 | CLOCAL | CREAD;

newtio.c_iflag = 0; // IGNPAR | ICRNL

newtio.c_oflag = 0;

newtio.c_lflag = 0; // ICANON

newtio.c_cc[VTIME] = 0;

newtio.c_cc[VMIN] = 1;

tcflush(fd, TCIOFLUSH);

tcsetattr(fd, TCSANOW, &newtio);

//设置为非阻塞模式,这个在读串口的时候会用到

fcntl(fd, F_SETFL, O_NONBLOCK);

return fd;

}

/* 功能:uart_send 串口数据发送函数

* 参数:无

* 返回值:int:-1 失败

* 备注:---

*/

int uart_send(void)

{

uint8_t buffer[4] = {0};

buffer[0] = 'T';

buffer[1] = 'X';

buffer[2] = '\n';

buffer[3] = '\n';

int ret = write(fd, buffer, sizeof(buffer));

return ret;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值