树莓派_Linux串口编程_实现自发自收

本文介绍了如何在树莓派上进行Linux串口编程,实现串口设备/dev/ttyAMA0的自发自收。首先,通过修改配置文件禁用串口控制台并重启,然后编写C程序进行串口初始化,设置波特率、数据位、停止位等参数,并通过read和write函数实现串口数据的接收和发送。短接TXD与RXD后,程序成功实现了串口的自发自收。
摘要由CSDN通过智能技术生成
串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,具有连接线少,通讯简单,得到广泛的使用。
Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串口,只需打开其设备文件即可操作串口设备。在linux系统下面,每一个串口设备都有设备文件与其关联,设备文件位于系统的/dev目录下面。如linux下的/ttyS0,/ttyS1分别表示的是串口1和串口2。
树莓派UART端口的位置:见下图的GPIO14(TXD)、GPIO 15(RXD)


c8051可以通过以下步骤实现串口通信自发自收: 1. 配置串口工作模式:通过设置串口控制寄存器(SCON)的相关位,选择串口的工作模式、波特率等参数。 2. 发送数据:将要发送的数据写入串口数据寄存器(SBUF)中,串口会自动将数据发送出去。 3. 接收数据:当有数据从串口发送过来时,串口会自动将数据存储到SBUF中,并触发串口中断。在中断服务函数中,可以将接收到的数据读取出来,进行处理。 4. 自发自收:为了实现自发自收,需要在中断服务函数中实现一个循环,不断地将读取到的数据写入SBUF中,以实现自发自收的功能。 下面是一个简单的c8051串口通信自发自收代码示例: ```c #include <c8051f020.h> void main() { // 串口配置 SCON = 0x50; // 选择工作模式为模式1 TMOD = 0x20; // 定时器1工作在模式2 TH1 = 0xfd; // 波特率设置为9600bps TL1 = 0xfd; // 定时器1启动 TR1 = 1; // 中断配置 IE = 0x90; // 允许串口中断和定时器1中断 IP = 0x10; // 将串口中断优先级设为高 // 启用全局中断 EA = 1; // 循环发送和接收数据 while(1) { // 发送数据 SBUF = 0x55; // 接收数据 // 数据将在中断服务函数中处理 } } // 串口中断服务函数 void serial_ISR() __interrupt 4 { // 发送和接收数据 SBUF = SBUF; } ``` 在该代码中,我们通过设置SCON和TMOD寄存器来配置串口的工作模式和波特率,然后启动定时器1,并开启中断。在主循环中,我们通过不断地向SBUF中写入数据来实现自发自收的功能。在中断服务函数中,我们将读取到的数据再次写入SBUF中,实现自发自收的功能。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值