ARM9转485通讯协议.docVIP

  • 2
  • 0
  • 约2.11千字
  • 约 3页
  • 2017-06-08 发布于重庆
  • 举报
ARM9转485通讯协议

为ARM9加485接口   近来有一个项目要在ARM9上用到一个485总线,这开始想来不太好做,可是做起来也很容易,这就把我的做法在这里做个记录,要是有兴趣的朋友可以看看;   先把一个串口的R,D分别接到MAX485的R,D接口,然后接一根不用的引脚到485的控制脚,只要在发送数据时把该引脚置高,接收时置低就好 下面是该引脚的GPIO驱动: //GPIO_drv.h #ifndef _GPIO_H_ #define _GPIO_H_ #include??/* needed for the _IOW etc stuff used later */ #define GPIO_IOC_MAGIC k #define IOCLR _IO GPIO_IOC_MAGIC,??11 #define IOSET _IO GPIO_IOC_MAGIC,??12 #define IOGET _IO GPIO_IOC_MAGIC,??13 #define GPC14 1 #include?? #include? #include? #include? #include? #include? #include? #include? #include? #include? #include? #define TEST #include gpio_driv.h #define IOPORT_MAJOR 220? typedef char ioport_device_t;? long port_addr; static ioport_device_t gpio_devices[257]; int gpio_open struct inode*,struct file * ; int gpio_release struct inode*,struct file * ; int gpio_ctl_ioctl struct inode*,struct file *, unsigned int, unsigned long ; static struct file_operations gpio_ctl_fops ioctl:gpio_ctl_ioctl, open:gpio_open, release:gpio_release, ; int __init gpio_init void int ret; ret register_chrdev IOPORT_MAJOR, gpio_driv, gpio_ctl_fops ; if ret i_rdev ; #ifdef TEST //test //PB01,PB0 out,PB1 in AT91_SYS- PMC_PCER | 1PIOB_PER | 3PIOB_OER | 1PIOB_ODR | 2PIOB_PER | 3PIOB_OER | 1PIOB_ODR | 2PMC_PCER | 1PIOC_PER | 0x3PIOC_OER | 0x3i_rdev ; if gpio_devices[minor] ??gpio_devices[minor]--; return 0; int gpio_ctl_ioctl struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg //int minor MINOR inode- i_rdev ; int ret 0; int local; switch cmd case IOSET: ??if arg GPC14 #ifdef TEST ? ?AT91_SYS- PIOB_SODR | 1PIOC_SODR | 1PIOC_SODR | 1PIOB_SODR | 1PIOB_CODR | 1PIOC_CODR | 1PIOC_CODR | 1PIOB_CODR | 1PIOB_PDSR; #else? ??local AT91_SYS- PIOC_PDSR; #endif ??ret put_user local,?? unsigned int * arg ; ??break; return ret; 我用的是PB22脚,这你们可以根据自已的要求改, 下面是该驱动的测试程序 #include?? #include? #include? #include? #include? #include? #include? #define DEVICE_GPIODRIV /dev/gpio_driv #include gpio_driv.h

文档评论(0)

1亿VIP精品文档

相关文档