DAV数字音视工程网_会议系统、指挥调度、演艺科技、智能楼宇等音视频工程信息行业门户

DAV首頁
數字音視工程網

微信公眾號

數字音視工程網

手機DAV

null
null
null
卓華,
招商,
null
null
null
快捷,
null

我的位置:

share

高清視頻監控中的I2C總線云臺電機控制設計

來源:數字音視工程網        編輯:航行150    2015-05-21 15:44:30     加入收藏    咨詢

咨詢
所在單位:*
姓名:*
手機:*
職位:
郵箱:*
其他聯系方式:
咨詢內容:
驗證碼:
不能為空 驗證碼錯誤
確定

為了構建一個平安交通和智能交通 ,視頻監控系統 在交通行業的應用也越來越多,為了能全方位的對高速公路進行監控,視頻監控的高速球也應用越來越廣泛。

  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云臺電機,完成驅動程序設計和應用程序設計,以及應用程序控制電機轉動,應用于視頻監控系統中,達到全方位的高速公路視頻監控。

  3I2C硬件構成和通信協議

  I2C總線是由雙向數據線和時鐘線構成的二線制串行總線,總線采用主從雙向通信,即總線上在某一時刻只有一個主設備總線上的其他設備都作為從設備,任何能夠進行發送和接收的設備都可以成為主設備,但是在同一時間內只能有一個設備作為主設備,通常為處理器,其他器件作為從設備與主設備進行通信,采用唯一的I2C地址識別。

 圖1I2C時序

  圖1I2C時序

  如圖1I2C的工作時序圖所示,I2C總線在傳送數據過程中使用了三種信號。(1)開始信號:SCL為高電平時,SDA由高電平向低電平跳變,表示將要開始傳送數據;(2)應答信號:從設備在接收到1個字節數據后向主設備發出一個低電平脈沖應答信號,表示已收到數據,主設備根據從設備的應答信號做出是否繼續傳輸數據的操作(I2C總線每次數據傳輸時字節數不限制,但是每發送都要有一個應答信號);(3)結束信號:為低電平時由低電平向高電平跳變,表示數據傳送結束。

  總線具體的通信工作原理:主設備首先發出開始信號,接著發送的1個字節的數據,其由高7位地址碼和最低1位方向位組成(方向位表明主設備與從設備間數據的傳送方向)。系統中所有從設備將自己的地址與主設備發送到總線上的地址進行比較,如果從設備地址與總線上的地址相同,該設備就是與主設備進行數據傳輸的設備。接著進行數據傳輸,根據方向位,主設備接收從設備數據或發送數據到從設備。當數據傳送完成后,主設備發出一個停止信號,釋放I2C總線,然后所有從設備等待下一個開始信號的到來。

  4I2C的Linux和ARM驅動設計

  (1)Linux2.6.32的I2C驅動分析。

  I2C由主設備和從設備構成,通信上通過識別I2C地址進行通信,即可以存在多個i2cadapter適配器和多個外設i2cdevice,Linux的I2C驅動采用分層設計實現的思想,層與層之間不存在耦合,增加adapter和增加device不會影響其他驅動,具體分層如下。

  第一層:提供i2cadapter的硬件驅動,探測、初始化i2cadapter(如申請i2c地址和中斷號),驅動處理器控制的i2cadapter在硬件上產生信號(start、stop、ack)以及處理i2c中斷,涉及圖2中的硬件實現層。

  第二層:提供i2cadapter的algorithm,用具體適配器的xxx_xfer()函數來填充i2c_algorithm的master_xfer函數指針,并把賦值后的i2c_algorithm,再賦值給i2c_adapter的成員指針,主要涉及圖2中訪問抽象層、i2c核心層。

  第三層:實現i2c設備驅動中的i2c_driver接口,用具體的i2cdevice設備的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總線驅動(busdriver),第三層和第四層屬于i2c設備驅動(devicedriver)。在Linux驅動架構中,不需要再開發總線驅動,因為Linux內核幾乎集成所有總線驅動,驅動設計主要是實現第三層和第四層的設備驅動。

    圖2I2c驅動架構圖

  圖2I2c驅動架構圖

  (2)云臺電機驅動設計

  根據Linux2.6.32的驅動分層設計,驅動的第一層和第二層在Linux-2.6.32中以及集成了成熟驅動,分別位于Linux源代碼目錄下的\drivers\i2c\i2c-core.c和\drivers\i2c\busses\davinci.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所示。

  下面通過I2C_devIoctl介紹這三個函數的實現過程,命令I2C_CMD_SET_DEV_ADDR實現地址設置,I2C_CMD_READ實現數據讀取,I2C_CMD_WRITE實現數據寫入,最終分別調用,其中I2C_create實現I2C設備加載,I2C_read實現I2C設備數據讀取,I2C_write實現I2C設備數據寫入,其中I2C_create利用i2c_add_driver調用i2c_probe,最終調用i2c_set_clientdata加載I2C從設備,I2C_read和I2C_write利用i2c_transfer函數調用master_xfer實現數據的讀取和寫入,具體實現過程如圖3所示,其中I2C_devIoctl實現部分代碼如下:

  intI2C_devIoctl(structinode*inode,structfile*filp,unsignedintcmd,unsignedlongarg){

  switch(cmd){

  caseI2C_CMD_SET_DEV_ADDR://I2C設置地址設置

  filp->private_data=I2C_create(arg);

  ……

  caseI2C_CMD_READ://數據讀取

  status=copy_from_user((void*)arg,sizeof(transferPrm));

  if(status==0){

  status=copy_from_user();//省略參數

  if(status==0){

  status=I2C_read();//省略參數

  if(status==0){

  status=copy_to_user();//省略參數

  }

  }

  }

  break;

  caseI2C_CMD_WRITE://數據寫入

  ……

  }

  returnstatus;

    圖4云臺電機控制應用程序設計圖

  圖3I2C電機驅動設計圖

  5I2C應用程序設計

  根據I2C驅動程序設計,要正確調用驅動程序,需要實現驅動的用戶空間調用函數,主要是實現open和ioctl等調用函數,因此在應用層的接口函數中也需要實現此函數。

  i2c_Init()函數實現open函數,調用驅動函數打開該設備驅動,定義一個數據結構體為:

  typedefstruct{

  unsignedchardataSize;

  unsignedcharcount;

  unsignedchar*reg;

  void*value;

  }I2C_Data;

  該結構體主要用來實現用戶空間和內核空間的調用的數據交換,dataSize代表數據的大小,value是傳輸的數值,reg是傳輸命令參數,函數有I2c_Read8()是向內核讀入一個字節數據,I2c_Write8()是向內核寫入一個字節數據,I2c_Read16()是向內核寫入2個字節數據,I2c_Write16()是向內核寫入2個字節數據,下面列舉一個函數說明具體的實現過程,

  I2c_Write8(intfdunsignedchar*reg,unsignedchar*value,unsignedcharcount){

  I2C_Dataptr;unsignedintcmd;intstatus;

  ptr.dataSize=1;ptr.reg=reg;ptr.count=count;ptr.value=value;

  cmd=CMD_WRITE;

  status=ioctl(fd,cmd,ptr);

  if(status!=0)

  printf("ioctlI2C_CMD_WRITEerror!");

  returnstatus;

  }

  如圖4所示,函數最終通過條用ioctl這個函數實現對驅動的調用,其中參數fd是設備句柄,cmd讀寫控制是命令,其中宏定義I2C_CMD_SET_DEV_ADDR為地址設置命令,I2C_CMD_READ向內核讀取數據命令,I2C_CMD_WRITE向內核寫入數據命令。

  其他3個讀寫函數實現過程類似,這幾個函數是數據寫入讀出的函數接口,方便應用層實現調用。

    圖3I2C電機驅動設計圖

  圖4云臺電機控制應用程序設計圖

  6云臺電機控制應用程序設計

  云臺很重要部分是電機轉動控制,本課題研究采用圖像界面實現人機交互,其中界面設計采用QT圖形界面軟件來設計,可以在界面操作實現電機的水平轉動、垂直轉動,逆時針轉動和順時針轉動,從而帶動視頻監控的攝像頭朝不同方位轉動以及定位,如圖所示。根據協議,應用程序設計主要實現以下操作:

  (1)獲取當前的垂直位置,函數接口為get_motor_curVertical_ptr(),返回垂直位置值;

  (2)獲取當前的水平位置,函數接口為get_motor_curHorizontal_ptr(),返回水平位置值;

  (3)設置垂直運行的停止位置,函數接口為set_motor_vertical_ptr(unsignedshortptr),參數ptr為設置的垂直停止位置值;

  (4)設置水平運行的停止位置,函數接口為set_motor_horizontal_ptr(unsignedshortptr)參數ptr為設置的水平停止位置值;

  (5)水平操作和垂直操作的啟動操作,接口函數為set_motor_opt(boolbVertical,boolbHorizontal),參數bVertical表示是否啟動垂直操作,bHorizontal表示是否啟動水平操作

  (6)設置運行速度,函數接口為set_motor_speed(unsignedcharvertical_speed,unsignedcharhorizontal_speed),參數vertical_speed控制垂直方向速度值,horizontal_speed控制水平方向速度值;

  (7)設置電機運行方向,接口函數set_motor_direction(boolbVertical,boolbHorizontal),設置運行方向為順時針或者逆時針,參數bVertical為真表示垂直方向向上運動,為假表示向下運動;bHorizontal為真,表示水平方向逆時針,否則為順時針。

  下面通過運動速度的接口函數set_motor_speed(),詳細介紹云臺控制接口函數的實現過程,電機轉動速度設置函數設置set_motor_speed(),其中函數參數vertical_speed為垂直方向運動速度;horizontal_speed為水平方向運動速度,局部變量reg用于制定控制類型,value設計為16位,其中高8位存放垂直轉動速度數值命令,低8為存放水平轉動速度數值,參數設置完后調用I2c_Write16()函數,從而調用ioctl實現對驅動的調用,最終通過I2C總線控制電機,達到電機快速轉動、定位準確。

  set_motor_speed(unsignedcharvertical_speed,unsignedcharhorizontal_speed){

  intret;

  unsignedcharreg;

  unsignedshortvalue=0;

  reg=3;

  value=vertical_speed

  value|=horizontal_speed;

  ret=I2c_Write16(fd,®,&value);

  if(ret!=0)

  printf("set_motor_speederror");

  returnret;

  }

  7結束語

  本系統設計實現了一款基于TMS320DM368的高清視頻監控系統中的云臺電機控制設計,完成了i2c驅動程序的分析以及設計,并且完成了i2c應用程序的設計和云臺電機控制應用程序設計,達到了應用目的,取得了良好效果

免責聲明:本文來源于網絡收集,本文僅代表作者個人觀點,本站不作任何保證和承諾,若有任何疑問,請與本文作者聯系或有侵權行為聯系本站刪除。(原創稿件未經許可,不可轉載,轉載請注明來源)
掃一掃關注數字音視工程網公眾號

相關閱讀related

評論comment

 
驗證碼:
您還能輸入500
    主站蜘蛛池模板: 专业儿童感统训练机构-武汉优佳加智能教育[官网] | 泊头压滤机-隔膜-洗沙-厢式-板框压滤机-河北巨盛压滤机制造有限公司 | 免费会员管理系统,会员管理软件,会员卡积分系统—智络软件 | 秦皇岛图成玻璃_横切机,琴键落板,堆垛机械手,玻璃钢化设备,掰边机,铺纸机,水平堆垛机+超大板堆垛机,纵掰纵分,下片机,冷端优化切割 | 厦门,泉州自助餐上门|生日自助餐|婚礼自助餐|公司聚会自助餐|户外烧烤|冷餐|茶歇外卖配送-福建非选餐饮公司 | 硬度计,里氏硬度计,布氏硬度计,高强螺栓检测仪,平板导热仪,专业无损检测仪器商-北京时代新天测控技术有限公司-北京时代新天测控技术有限公司 | 上海物流公司_上海冷链运输_空运_电商仓储配送电话-迈泽物流 | 威学一百-专注国际学校择校备考-DSE-A-level-雅思-托福-OSSD-港澳台联考-AP-IGCSE-IB-AMC-多邻国-PTE-SAT-SSAT-小语种(如日语,韩语,德语,法语,西班牙语,意大利语,俄语,泰语)等考试培训,为出国留学学生提供个性化定制性学习方案,线下实体面授+线上网络课程, 提供一对一,小班课等多种班型 | 指挥调度|调度系统|应急指挥调度|应急指挥|可视化调度|多媒体指挥调度|融合通信|综合调度|应急指挥系统|IP调度系统-北京瑞光极远数码科技有限公司 | 山东德曼医疗设备集团有限公司| 专业生产安检门-X光机-防爆罐-金属探测门-中警思创军警装备厂家 专业色素炭黑生产厂家,提供各种用途色素炭黑价格-枣庄鑫源化工 专业护工_医院护工_护工陪护_住家护工- 心陪护 | 气体报警器,有毒气体报警器,可燃气体探测器,乙炔气体报警器,可燃气体检漏仪,便携式气体检测仪,气体报警控制器-山东如特安防设备有限公司 | 全玻璃视镜人孔-卡箍组件-常压单臂梁人孔-温州华强流体设备有限公司 | 全铝家居_十大全铝家具品牌_全铝衣柜橱柜——佛山欧格美铝业 | 威学一百-专注国际学校择校备考-DSE-A-level-雅思-托福-OSSD-港澳台联考-AP-IGCSE-IB-AMC-多邻国-PTE-SAT-SSAT-小语种(如日语,韩语,德语,法语,西班牙语,意大利语,俄语,泰语)等考试培训,为出国留学学生提供个性化定制性学习方案,线下实体面授+线上网络课程, 提供一对一,小班课等多种班型 | 湖南净声源环保科技有限公司是一家专业从事噪声治理和建筑声学设计生态环境综合治理服务的企业,专业从事株洲电梯隔音治理,湘潭中央空调降噪处理,衡阳邵阳冷却塔噪音治理,岳阳常德大型风机噪声隔音降噪,张家界空压机噪声治理,益阳配电房变压器噪声治理,专业郴州永州工厂企业车间噪声治理,怀化娄底专业机械设备减振降治理,武汉噪音治理隔音降噪公司,孝感噪音治理,立式球磨机的噪声控制,专业隔音降噪公司,、以及各类机械动力设备减振降噪噪声治理的公司,同时为客户提供咨询与解决方案 | 域发官网-皮肤学级头皮养固领先者| 上海网站建设-上海网站制作-网站设计-上海做网站公司-SEO优化推广-咏熠软件 | 无锡防火门|无锡放火卷帘门|无锡市防火卷帘门厂有限公司 | 买化工,找万创!泉州万创化工贸易有限公司 | 陕西硅酸钙板厂家_西安水泥压力板-陕西凯盛达建材科技有限公司 | 塑胶篮球场施工|塑胶网球场施工|幼儿园塑胶施工|石家庄亚强体育公司 | 神马影院电影网_实时更新秒播电视剧、电影、动漫的网站 _ 神马影院 | 嘉兴市南湖斋食品股份有限公司_南湖斋 | 人工气候-智能-低温生化培养箱厂家|价格-上海予卓仪器 | 山东发电机组生产厂家,特种火花塞生产厂家,高压线生产厂家,空气滤芯生产厂家,济南市博盛动力机械有限公司 | 通风方式信号控制箱_人防呼叫按钮_人防设备厂家–西安鼎兴自控工程有限公司 | 全降解塑料厂家_淋膜_秸秆_手机壳_气泡袋_牙刷牙线_GRS可回收包装材料-东莞全球环保科技有限公司 | 停车场收费管理系统,通道闸系统,门禁系统,东莞停车场收费管理系统,东莞通道闸系统,-东莞市骄阳交通设备有限公司 | 小耳朵电源_安防监控电源|小耳朵官网|电源适配器|摄像机电源|开关电源|小耳朵监控电源 | 柔性电缆-专业机器人电缆,拖链电缆生产厂家 | 温湿度变送器_pm2.5传感器_湿敏电阻_二氧化碳传感器_甲醛传感器-美特瑞科技 | 山东胜王水处理设备有限公司,反渗透设备,纯净水设备,污水处理设备,SWS系列全自动钠离子交换器,纯净水设备报价,活性碳过滤器,多介质过滤器 | 南京企业宣传片制作,广告形象片,影视制作,宣传片拍摄,微电影拍摄制作公司 | 液晶拼接屏_液晶监视器_液晶广告机_触摸一体机_户外广告机_中亿睿企业官网 | 模具|晒纹-咬花-拉丝纹-立体纹-东莞市佳毅激光科技有限公司 | 余压控制器,余压监控系统,余压传感器-浙江巨川电气科技有限公司 | 泥沙泵_脱硫泵_潜水泵_离心泵_渣浆泵厂家|诚信为先-泰安华泰泵业制造有限公司 | 水热反应釜厂家_水热反应釜价格_水热合成反应釜批发-仪贝尔仪器 - 水热釜,水热反应釜,水热反应釜厂家,水热反应釜价格,水热反应釜型号,水热反应釜内衬,水热反应釜25ml,水热反应釜50ml,水热反应釜100ml,水热合成反应釜 | 提供技术支持-TXC晶振-晶振厂家-32.768K,石英晶体振荡器厂家销售-NDK振荡器正规代理商 | 无缝钢管生产厂家-20G-L360N无缝钢管价格-天津海诚无缝钢管集团 无尘投料站-真空上料机-旋振筛|超声波振动筛|摇摆筛|筛分机-新乡市欧霖佳机械有限公司 |