设备驱动开发实验教程(12)_RS485总线驱动

本文是关于RS485总线驱动的实验教程,重点介绍如何在嵌入式系统上实现串口转485。内容包括RS485与RS232的传输距离对比,以及485驱动的组成——串口驱动和GPIO字符驱动。文中通过具体的原理图阐述了485驱动的实现,特别提到在3.3V和1.8V电平转换的情况,并给出了GPIO字符驱动和应用程序的示例。
摘要由CSDN通过智能技术生成

        RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。RS232传输的距离在15米以下,RS485传输距离是几十米到1000米以上。

        嵌入式系统上一般使用串口转485,本文以如下原理图为例,讲解RS485总线驱动。

        485驱动=串口驱动+GPIO的字符驱动,串口驱动一般都用系统提供的,不需要自己写,需要自己写的只有GPIO字符驱动,并在应用程序中调用GPIO字符驱动及串口驱动。

        BUF_XURTS1高电平发送,低电平接收。当然,由于主板采用3.3V供电,核心板采用1.8V供电,是需要经过一颗电平转换芯片的。

        主板BUF_XuRXD1信号(经过电平转换芯片→)主板XuRXD1信号(板对板连接器→)核心板处理器GPA0_4;

        主板BUF_XuTXD1信号(经过电平转换芯片→)主板XuTXD1信号(板对板连接器→)核心板处理器GPA0_5;

        主板BUF_XURTS1信号(经过电平转换芯片→)主板XURTS1信号(板对板连接器→)核心板处理器GPA0_7;

 

GPIO字符驱动如下:

#include <linux/init.h>
#include <linux/module.h>

#include <linux/kernel.h>
#include <linux/fs.h>
#include <mach/gpio.h>
#include <plat/gpio-cfg.h>
#include <linux/miscdevice.h>
#include <linux/platform_device.h>
//#include <mach/gpio-bank.h>
#include <mach/regs-gpio.h>
#include <asm/io.h>
#include <linux/regulator/consumer.h>	//cwp, PMIC interafce
//#include "gps.h"
#include <linux/delay.h>

#define GPS_DEBUG
#ifdef GPS_DEBUG
#define DPRINTK(x...) printk("MAX485_CTL DEBUG:" x)
#else
#define DPRINTK(x...)
#endif

#define DRIVER_NAME "max485_ctl"

int max485_ctl_open(struct inode *inode,struct file *filp)
{
	DPRINTK("Device Opened Success!\n");
	return nonseekable_open(inode,filp);
}

int max485_ctl_release(struct inode *inode,struct file *filp)
{
	DPRINTK("Device Closed Success!\n");
	return 0;
}

int max485_ctl_pm(bool enable)
{
	int ret = 0;
	printk("firecxx debug: GPS PM return %d\r\n" , ret);
	return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值