串口是比较常见的通信接口,在Linux下的话,也是可以直接通过读写文件的方式使用串口通信。在之前的SPI使用也是通过读写文件的方式的,在Linux下文件真的是太万能了。根据NanoPi K1 Plus的Wiki说明,串口对应的文件是/dev/ttySX。
因为之前在NanoPi K1 Plus搭建了STM8的开发环境,所以这里用STM8和NanoPi K1 Plus进行串口通信。串口通信也是需要设置一些参数的,在之前的SPI使用中,用到了ioctl函数来设置SPI相关的参数,这次要设置串口相关的参数就需要使用其他的函数了。
其中主要是对struct termios进行设置。
在上面的代码里将波特率设置为了9600,8比特数据传输,
启用字符接收器,然后直接使用tcsetattr使设置生效。
接下来就可以直接使用read的函数来读取串口数据了。
同样,使用write可以直接发送数据。
注意,连接的时候需要将NanoPi K1 Plus的RX接STM8的TX,NanoPi K1 Plus的TX接STM8的RX。
附件是完整代码。这里还有一个遗留问题,代码是按照一个一个字符读的,STM8中是大概每一秒发送一个字符,但是在NanoPi K1 Plus下只有在STM8发送换行符以后,才会把所有字符一次性读完。我也用了wiringPi的串口函数,也是一样的效果。这个比较尴尬。之后再慢慢研究吧。
串口是比较常见的通信接口,在Linux下的话,也是可以直接通过读写文件的方式使用串口通信。在之前的SPI使用也是通过读写文件的方式的,在Linux下文件真的是太万能了。根据NanoPi K1 Plus的Wiki说明,串口对应的文件是/dev/ttySX。
因为之前在NanoPi K1 Plus搭建了STM8的开发环境,所以这里用STM8和NanoPi K1 Plus进行串口通信。串口通信也是需要设置一些参数的,在之前的SPI使用中,用到了ioctl函数来设置SPI相关的参数,这次要设置串口相关的参数就需要使用其他的函数了。
其中主要是对struct termios进行设置。
在上面的代码里将波特率设置为了9600,8比特数据传输,
启用字符接收器,然后直接使用tcsetattr使设置生效。
接下来就可以直接使用read的函数来读取串口数据了。
同样,使用write可以直接发送数据。
注意,连接的时候需要将NanoPi K1 Plus的RX接STM8的TX,NanoPi K1 Plus的TX接STM8的RX。
附件是完整代码。这里还有一个遗留问题,代码是按照一个一个字符读的,STM8中是大概每一秒发送一个字符,但是在NanoPi K1 Plus下只有在STM8发送换行符以后,才会把所有字符一次性读完。我也用了wiringPi的串口函数,也是一样的效果。这个比较尴尬。之后再慢慢研究吧。