MA35D1如何测试RTS CTS自动流控功能

qwang |浏览304次
收藏|2022/11/11 10:28

满意回答

2022/12/02 15:27

串口驱动文件:Ma35d1_serial.c (drivers\tty\serial)

函数ma35d1serial_set_termios中会根据是否设置CRTSCTS这个flag,来让

函数ma35d1serial_set_mctrl设置enable CTS/RTS auto-flow control

if (up->mcr & UART_MCR_AFE) {

// set RTS high level trigger

mcr = serial_in(up, UART_REG_MCR);

mcr |= 0x200;

mcr &= ~(0x2);


// enable CTS/RTS auto-flow control

serial_out(up, UART_REG_IER, (serial_in(up, UART_REG_IER) | (0x3000)));


// Set hardware flow control

up->port.flags |= UPF_HARD_FLOW;


如果需要使用这个功能,在用户层使用串口设置参数时需要设置CRTSCTS,这样驱动就会开启自动流控制

自动流控制,这个控制在FIFO达到最大时触发。

测试的时候可以将FIFO值改成最小(1byte),然后编写相关测试application,对串口进行读写,用示波器抓取RTS、CTS信号,看有没有高电平(正常传输数据时低电平有效)


修改FIFO:

函数ma35d1serial_startup

// FIFO trigger level 4 byte // RTS trigger level 8 bytes

serial_out(up, UART_REG_FCR, serial_in(up, UART_REG_FCR) | 0x10 | 0x20000);

-->修改为(参考FIFO设置寄存器)

// FIFO trigger level 4 byte // RTS trigger level 1 bytes

serial_out(up, UART_REG_FCR, serial_in(up, UART_REG_FCR) | 0x10 | 0x00000);

测试步骤:

1、烧录修改FIFO的image

2、编写串口应用程序,实现对串口进行读写

3、测试串口连接电脑

4、电脑串口应用打开并设置RTS/CTS 

5、在开发板中运行步骤2编写的串口应用

6、输入/输出字符并用示波器测量RTS/CTS信号


蔡芳芳

其他回答(0)
0人关注该问题
+1
 加载中...