本章节主要介绍 RS485 驱动如何修改 ioctl 操作间隔的参数,通过 ioctl 控制模块数据传输方向的时间间隔修改方法。适用于 iTOP-4412 精英版、iTOP-4412 全能版、iTOP-4418/6818 全能版、 iTOP-iMX6Q/D全能版等。

以 iTOP-4412 开发板的 RS485 模块为例,其它系列开发板 RS485 模块在底板上,硬件原理和驱动代码是一模一样的。如下图所示,串口转 RS485 的模块为 “SN65HVD3082”,pin2 和 pin3 管脚,用于控制 RS485 发送和接收的方向。

在 RS485 的 C 测试例程中,ioctl 控制的 RS485 设备节点为“/dev/max485_ctl_pin”

设备节点赋值的代码为:

char *max485_ctl = "/dev/max485_ctl_pin";

如下图所示,函数“prepare_to_send”和“prepare_to_recv”,RS485 模块在准备发送和接收数据前,都需要调用对应 的发送准备函数和接收准备函数 ,其中控制发送和接收的,就 是 RS485 模块

“SN65HVD3082”的 pin2 和 pin3 管脚,控制 pin2 和 pin3 的高低就可以控制方向。

如果用户自己更新 RS485 的应用程序,会发现这个管脚高低电平切换最少需要 100ms,不能短于这个时间。

ioctl 函数就涉及到 RS485 驱动,RS485 模块的驱动是内核源码下的

“drivers/char/max485_ctl.c”文件。RS485 驱动文件中,ioctl 相关代码如下所示。

long max485_ctl_ioctl(struct file *filp,unsigned int cmd,unsigned long arg)

{

printk("firecxx debug: max485_ctl_ioctl cmd is %d\n" , cmd);

switch(cmd)

{

case 1:

if(gpio_request(EXYNOS4_GPA0(7) ,"GPA0_7"))

{

DPRINTK("max485_ctl GPIO err!\r\n");

}

else

{

gpio_direction_output(EXYNOS4_GPA0(7), 1);

DPRINTK("max485_ctl Set High!\n");

gpio_free(EXYNOS4_GPA0(7));

mdelay(100);

}

break;

case 0:

if(gpio_request(EXYNOS4_GPA0(7) ,"GPA0_7"))

{

DPRINTK("max485_ctl GPIO err!\r\n");

}

else

{

gpio_direction_output(EXYNOS4_GPA0(7),0);

DPRINTK("max485_ctl Set Low!\n");

gpio_free(EXYNOS4_GPA0(7));

mdelay(100);

}

break;

default:

DPRINTK("max485_ctl COMMAND ERROR!\n");

return -ENOTTY;

}

return 0;

}

如上代码所示,红色部分是导致上层应用调用 ioctl 间隔至少 100ms,硬件管脚高低切换至少为 100ms的原因。

如果用户切换数据发送和接收的状态少于 100ms,可以将其 mdelay(100);注释,然后重新编译内核镜像烧写到开发板。但是请务必注意的是,发送和接收之间切换的时候,请务必在应用程序中根据实际情况给一定的延时,延时的大小,用户需要根据自己实际应用来调整,否则会出现丢数据的情况。

更多内容关注:北京迅为

iTOP-4418开发板RS85模块ioctl操作时间间隔修改相关推荐

  1. iTOP-4418开发板-驱动-RS485模块ioctl操作时间间隔修改

    本文档介绍迅为RS485模块测试例程,通过ioctl控制模块数据传输方向的时间间隔修改 方法. 适用迅为iTOP-4412开发板丨4418开发板丨6818开发板丨IMX6开发板 本文档以 iTOP-4 ...

  2. 迅为四核4418开发板MiniLinux-CAN总线测试使用文档

    文档介绍的是在 MiniLinux 系统环境下 iTOP-4418 CAN 实验调试步骤.提供了"can_libs.rar"."can_tools.zip"和& ...

  3. 迅为4418开发板邮票孔与连接器版本区别

    迅为4418开发板邮票孔与连接器版本区别 连接器版本 邮票孔版本 核心板类型 板对板连接器 邮票孔 尺寸 50mm*60mm PCB层数 6层PCB沉金设计 8层PCB沉金设计 高度 核心板连接器组合 ...

  4. stm32mini开发板lora模块例程中中文字库更新失败的解决方案

    正点原子stm32mini板lora模块的问题解决 最近在做一个与Lora通信有关的模块,遇到了SD卡中文字库无法加载的问题,由于联系正点原子的研发人员周一才会上班,今天是周天,故自己解决了一下. 此 ...

  5. 4412开发板和4418开发板有什么区别-荣品电子

    4418是4412的简化版,不过成本也低了 1.先是芯片对比. 两个芯片都是三星出的四核cortex-a9芯片.目前4412芯片是停产了. 2.开发板对比 4412开发板有3G版和4G版,具体就不说了 ...

  6. android开发板功能,嵌入式开发-迅为4418开发板Android4.4.4实现ble功能

    ①.迅为4418开发板Android4.4.4实现ble功能: 在4418/android/device/nexell/drone2/device.mk中添加: frameworks/native/d ...

  7. 迅为4418开发板Linux系统修改和固定MAC地址

    本文介绍如何修改 Qt 系统的 MAC 等网络参数,Qt 系统的修改方法和根文件系统一模一样,可以通用. 在将 Qt 系统或者根文件系统烧写到开发板之后,启动开发板,如下图所示,只需要修改这个配置文件 ...

  8. LoRa开发板升级的时候,为什么需要修改跳线帽?

    一般来说,LoRa开发板都会提供boot选择,也就是从哪个区域启动.很多是采用跳线帽的方式来进行boot选择的,这也导致了LoRa开发板升级的时候,往往需要修改跳线帽. LoRa开发板的跳线帽位置的示 ...

  9. Android嵌入式安卓触摸屏|4418开发板平台

    核心板参数 尺寸:50mm*60mm 高度:核心板连接器为1.5mm 4418 CPU:ARM Cortex-A9 四核 S5P4418处理器 1.4GHz 6818 CPU:ARM Cortex-A ...

  10. 企业采购季选好开发板平台 迅为4418开发板

    工欲善其事,必先利其器,在开发产品过程中,选购一套适合自身的开发板也是如此,能够让你在开发过程中事半功倍. 选择迅为iTOP-4418的理由: 1.作为重中之重的电源管理选型,经多方对比测试最终选用A ...

最新文章

  1. 微软私有云分享(R2)11-应答文件浅析
  2. MVC开发中的常见错误-06-无法在发送 HTTP 标头之后进行重定向。
  3. js/jquery判断浏览器 停止加载
  4. MyBatis 关系映射XML配置
  5. mysql数据库的三级模式_2016年计算机三级MySQL数据库试题
  6. linux nginx编译安装mysql_Centos7下编译安装配置Nginx+PHP+MySql环境
  7. 徐明星解读区块链与物联网的重要联系
  8. 字典 python 引用_Python字典引用的应用
  9. Spring整合MyBatis原理之MapperScannerConfigurer(一)
  10. 除了迅雷外,还有什么靠谱的BT下载软件?
  11. 计算机考试系统客户端怎么用不了,[说明]计算机基础测评系统考试客户端操作步骤.doc...
  12. office2010软件安装资料及教程
  13. MongoDB学习笔记之索引(一)
  14. 2019最新《后盾网向军0基础学PHP教程》
  15. VOT2021比赛简介
  16. 恢复被文件夹病毒恶意隐藏的文件夹
  17. Miles per gallon to kilometers per liter
  18. vue2.0怎么渲染html,vue采坑之——vue里面渲染html 并添加样式
  19. 吉首大学2019年程序设计竞赛(重现赛) B 干物妹小埋
  20. ***kuku会读数***

热门文章

  1. Android 9.0 蓝牙电话BluetoothHeadsetClient
  2. php微信支付接口开发的实现程序
  3. VisualEffectGraph概述
  4. 最新微软产品MAK激活密钥
  5. 杜撰的柏拉图(转自李止介的个人空间)
  6. 打造企业级移动测试云平台
  7. 电脑开的热定手机连不上解决方法
  8. 类风湿性关节炎中的肠-关节轴
  9. 【应用笔记】APM32F4xx_ADC应用笔记
  10. Hive虚拟内存溢出报错:2.9GB of 2.1GB virtual memory used. Killing container.解决办法