Remi Pi是一款基于RZ/G2L工业级处理器,以Cortex-A55内核为核心的嵌入式板卡,主频为1.2GHz。 Remi Pi配备了1GB高速DDR4和8GB eMMC,集成了双路千兆以太网、双频2.4GHz/5GHz WIFI+BT4.2 模块、USB 2.0 HOST、USB 2.0 OTG、HDMI显示接口、LVDS显示接口、MIPI CSI摄像头接口、音频输入输出接口以及兼容树莓派的40PIN接口。
米尔-瑞米派Remi Pi-兼容树莓派生态板收到后准备做UART的数据交互。所以首先得学会如何使用UART。
1、在原理图中找到串口的接口:
从原理图中得知TX、RX为UART4。
原软件评估手册中找到uart_test的示例。
执行uart_test /dev/ttySC4 -b 115200 -r -asc -l
然后从串口助手发送数据,可以打印出来:
【编写自己的测试代码】
1. #include <stdio.h>
1. #include <fcntl.h>
1. #include <unistd.h>
1. #include <stdint.h>
1. #include <termios.h>
1. #include <string.h>
1.
1. /* 115200, 8, N, 1 */
1. int uart_setup(int fd)
1. {
1. struct termios options;
1.
1. // 获取原有串口配置
1. if (tcgetattr(fd, &options) < 0) {
1. return -1;
1. }
1.
1. // 修改控制模式,保证程序不会占用串口
1. options.c_cflag |= CLOCAL;
1.
1. // 修改控制模式,能够从串口读取数据
1. options.c_cflag |= CREAD;
1.
1. // 不使用流控制
1. options.c_cflag &= ~CRTSCTS;
1.
1. // 设置数据位
1. options.c_cflag &= ~CSIZE;
1. options.c_cflag |= CS8;
1.
1. // 设置奇偶校验位
1. options.c_cflag &= ~PARENB;
1. options.c_iflag &= ~INPCK;
1.
1. // 设置停止位
1. options.c_cflag &= ~CSTOPB;
1.
1. // 设置最少字符和等待时间
1. options.c_cc[VMIN] = 1; // 读数据的最小字节数
1. options.c_cc[VTIME] = 0; //等待第1个数据,单位是10s
1.
1. // 修改输出模式,原始数据输出
1. options.c_oflag &= ~OPOST;
1. options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
1.
1. // 设置波特率
1. cfsetispeed(&options, B115200);
1. cfsetospeed(&options, B115200);
1.
1. // 清空终端未完成的数据
1. tcflush(fd, TCIFLUSH);
1.
1. // 设置新属性
1. if(tcsetattr(fd, TCSANOW, &options) < 0) {
1. return -1;
1. }
1.
1. return 0;
1. }
1.
1. int main(int argc, char *argv[])
1. {
1. int fd;
1. int ret;
1. char ch;
1.
1. if (argc != 2) {
1. printf("usage: ./test_uart [device]\n");
1. return -1;
1. }
1.
1. /* 打开串口 */
1. fd = open(argv[1], O_RDWR | O_NOCTTY | O_NDELAY);
1. if (fd < 0) {
1. printf("open dev fail!\n");
1. return -1;
1. } else {
1. fcntl(fd, F_SETFL, 0);
1. }
1.
1. /* 设置串口 */
1. ret = uart_setup(fd);
1. if (ret < 0) {
1. printf("uart setup fail!\n");
1. close(fd);
1. return -1;
1. }
1.
1. /* 串口回传实验 */
1. while (1) {
1. scanf("%c", &ch);
1. ret = write(fd, &ch, 1);
1. printf("write [%c] , ret is %d!\r\n", ch, ret);
1.
1. ret = read(fd, &ch, 1);
1. if (ret < 1) {
1. printf("read fail, ret is %d\r\n", ret);
1. } else {
1. printf("recv a char:[0x%02x][%c]\r\n", ch, ch);
1. }
1. }
1.
1. close(fd);
1. }
编译好后上传给开发板,执行后,可以由串口终端转发给UART4
下面就可以插上开发板实现对NFC的操作了。
更多回帖