高清视频监控中的I2C总线云台电机控制设计

时间:2022-03-16作者:佚名

1 引言

近年来,随着视频技术发展,网络稳定性能快速提高,视频监控需求越来越大,其应用领域也越来越广泛。社会的发展,汽车增量不断增多,道路上各种违章的车辆也逐渐增多,为了构建一个平安交通和智能交通,视频监控系统在交通行业的应用也越来越多,为了能全方位的对高速公路进行监控,视频监控的高速球也应用越来越广泛。

本文将研究详细分析I2C的工作原理和通信协议和Linux的I2C总线驱动程序,设计一个应用在高速公路视频监控的基于I2C云台电机驱动系统,为高速公路的全方位视频监控提供一个设计方案。

2 高速公路视频监控系统以及云台电机整体设计

本研究课题的高速公路高清视频监控系统采用TI公司的TMS320DM368,DM368 是一款面向多媒体技术应用的高性能芯片,功能强大,集成了ARM926EJ-S内核、硬件编码协处理引擎( HDVICP)、图像处理子系统( VPSS)。DM368频率高达 432MH,支持多格式解码、多速率以及高清多通道功能,最高可以支持H.264编码 1080P格式 30帧/s的速度,而且还可提供多种独立式音频、语音以及高清视频编解码器(H.264)。该处理器有I2C总线等外围接口等,其中ARM9运行开源、性能稳定安全Linux 嵌入式操作系统。

视频监控系统中云台电机控制的设计采用DM368的I2C总线接口,设计基于ARM9的I2C云台电机,完成驱动程序设计和应用程序设计,以及应用程序控制电机转动,应用于视频监控系统中,达到全方位的高速公路视频监控。

3 I2C硬件构成和通信协议

I2C总线是由双向数据线和时钟线构成的二线制串行总线,总线采用主从双向通信,即总线上在某一时刻只有一个主设备总线上的其他设备都作为从设备,任何能够进行发送和接收的设备都可以成为主设备,但是在同一时间内只能有一个设备作为主设备,通常为处理器,其他器件作为从设备与主设备进行通信,采用唯一的I2C地址识别。

如图1I2C的工作时序图所示,I2C总线在传送数据过程中使用了三种信号。(1)开始信号:SCL为高电平时,SDA由高电平向低电平跳变,表示将要开始传送数据;(2)应答信号:从设备在接收到1个字节数据后向主设备发出一个低电平脉冲应答信号,表示已收到数据,主设备根据从设备的应答信号做出是否继续传输数据的操作(I2C总线每次数据传输时字节数不限制,但是每发送都要有一个应答信号);(3)结束信号:为低电平时由低电平向高电平跳变,表示数据传送结束。

总线具体的通信工作原理:主设备首先发出开始信号,接着发送的1个字节的数据,其由高7位地址码和最低1位方向位组成(方向位表明主设备与从设备间数据的传送方向)。系统中所有从设备将自己的地址与主设备发送到总线上的地址进行比较,如果从设备地址与总线上的地址相同,该设备就是与主设备进行数据传输的设备。接着进行数据传输,根据方向位,主设备接收从设备数据或发送数据到从设备。当数据传送完成后,主设备发出一个停止信号,释放I2C总线,然后所有从设备等待下一个开始信号的到来。

4 I2C的Linux和ARM驱动设计

(1)Linux2.6.32的I2C驱动分析。

I2C由主设备和从设备构成,通信上通过识别I2C地址进行通信,即可以存在多个i2c adapter适配器和多个外设i2c device,Linux的I2C驱动采用分层设计实现的思想,层与层之间不存在耦合,增加adapter和增加device不会影响其他驱动,具体分层如下。

第一层:提供i2c adapter的硬件驱动,探测、初始化i2c adapter(如申请i2c地址和中断号),驱动处理器控制的i2c adapter在硬件上产生信号(start、stop、ack)以及处理i2c中断,涉及图2中的硬件实现层。

第二层:提供i2c adapter的algorithm,用具体适配器的xxx_xfer()函数来填充i2c_algorithm的master_xfer函数指针,并把赋值后的i2c_algorithm,再赋值给i2c_adapter的成员指针,主要涉及图2中访问抽象层、i2c核心层。

第三层:实现i2c设备驱动中的i2c_driver接口,用具体的i2c device设备的i2c_add_driver ()、i2c_del_driver ()方法赋值给i2c_driver的成员函数指针,采用Probe探寻方式实现设备device与总线的挂接,涉及图2中的driver驱动层,此层是本文实现的驱动部分。

第四层:实现i2c设备所对应的具体device的驱动,i2c_driver只是实现设备与总线的挂接,挂接在总线上的设备千差万别的,所以要实现具体设备device的write()、 read()、ioctl()等方法,赋值给file_operations,然后注册字符设备,涉及图2中的driver驱动层,此层是本文实现的驱动部分。

第一层和第二层又叫i2c总线驱动(bus driver),第三层和第四层属于i2c设备驱动(device driver)。在Linux驱动架构中,不需要再开发总线驱动,因为Linux内核几乎集成所有总线驱动,驱动设计主要是实现第三层和第四层的设备驱动。

(2)云台电机驱动设计

根据Linux2.6.32的驱动分层设计,驱动的第一层和第二层在Linux-2.6.32中以及集成了成熟驱动,分别位于Linux源代码目录下的driversi2ci2c-core.c 和driversi2cbussesdavinci.c中,本文重点讲述第三层和第四层驱动程序的设计。

驱动设计采用字符设备方式来实现,motor_I2C_devInit()和motor_I2C_devExit()实现驱动的初始化以及退出,初始化最后调用cdev_add()实现字符设备的添加,添加过程中通过完善file_operations的结构体,填充了 .open = I2C_devOpen, .release = I2C_devRelease,.ioctl = I2C_devIoctl三个结构体变量,这三个用户空间接口驱动函数,完成注册后,用户空间可以采用文件读写的方式来操作I2C设备了,I2C_devOpen函数实现打开字符设备,I2C_devRelease函数实现关闭字符设备,I2C_devIoctl是实现和硬件设备实现数据传输的最重要函数,主要实现设备加载、数据读取和数据写入,从而完成用户空间和驱动程序以及硬件设备的数据交换,具体实现如图3所示。

相关阅读

电焊工必备的屌丝三证,缺一个都属无证上岗

无证上岗违法违规 2022年7月26日,嘉善县应急管理局执法人员到XXX有限公司开展执法检查,发现该单位生产车间焊接区域电焊工动火作业,现场抽查其中3名工作人员正在电焊作业,均无...
2023-07-18
电焊工必备的屌丝三证,缺一个都属无证上岗

甘肃适当限制景观照明亮化

甘肃省部分城市仍然存在在照明上盲目攀比亮度、景观照明 配置不科学等问题,加大了能源的消耗,全省有4个城市(区)未建生活垃圾无害化处理设施。兰州市已有22.8万名低收入居民享...
2022-07-15

商业街亮化设计有助于打造城市名片

商业街亮化设计 始终获得重视。商业街亮化设计打造了优良的,热闹非凡、比较繁荣的商业自然环境,造成很大程度的经济收益,另外,成功的商业景观亮化工程的实行,也有利于商业...
2022-10-18
商业街亮化设计有助于打造城市名片

城市夜景灯光亮化是城市风景线组成部分

伴随着我国城市的迅速发展壮大, 城市夜景灯光亮化 变成重要的城市美景构成部分。照明工程也逐渐增多,类型也变得越来越标准化,建筑、水景、园林景观、古建、特色小镇的夜景...
2022-10-02
城市夜景灯光亮化是城市风景线组成部分

城市景观照明具体地表现

城市景观照明 具体地表现为:城市的广场、街道、公园绿地、住宅区、旧城中传统街区和诸多的纪念性标志建筑,以及在其中发生的人类各种活动等。人们看到的城市景观照明往往是静...
2022-07-15

热销商品

电工胶带绝缘胶带PVC电胶布防水阻燃超粘耐温黑胶布汽车线束胶带

电工胶带是一款专业的电力电工用材,具备绝缘、PVC材质特性,可有效保障电气线路绝缘性能,防止电流外泄引发漏电风险。其采用防水、阻燃、超粘、耐温等设计,能适应复杂...
¥ 2.4

氟胶O型圈耐高温密封圈线径1-10mm现货可订做大尺寸胶圈非标异形

氟胶O型圈采用高性能氟橡胶(FKM)材料制成,具有卓越的耐高温、耐油、耐化学腐蚀性能,长期使用温度可达200℃以上,短期可耐受250℃高温。线径规格覆盖1–10mm,现货充足,支...
¥ 0.4

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.91

100%桑蚕丝香云纱饰品发圈发夹口罩眼罩发带腰封直播专拍单拍无效

100%桑蚕丝香云纱饰品系列,精选天然桑蚕丝与非遗香云纱工艺匠心打造,质感柔滑亲肤,光泽雅致,尽显东方韵味。包含发圈、发夹、口罩、眼罩、发带、腰封等多款实用配饰,适...
¥ 1

橱柜灯层板柜子线型灯LED免焊接餐边柜子灯感应灯衣柜鞋酒柜灯带

橱柜灯层板柜子线型灯LED免焊接餐边柜子灯感应灯衣柜鞋酒柜灯带是一种用于家居照明的灯具,具有多种款式和功能。这些灯具通常采用LED光源,具有节能、环保的优点,且使...
¥ 4.4

网站栏目