999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于CY7C63813-SXC 控制器軌跡球的設計與實現

2022-03-24 02:34:46官茂
長沙大學學報 2022年2期
關鍵詞:自動識別

官茂

(湖南興天電子科技有限公司技術中心,湖南 長沙 410006)

目前,人們在計算機上使用的人機接口設備,如鼠標、鍵盤等,大部分都是USB 接口,但PS/2接口因其傳輸距離相對更長,在某些特定領域仍被使用。例如,支持PS/2 接口的嵌入式軌跡球(以下簡稱軌跡球)是一種特殊的鼠標,是使用光學感應元器件和其原理制造的能管控屏幕或光標的人機接口設備,可在一定程度上讓使用人手腕的疲勞感降低,同時具有定位精準、手感較好的優點,所以在工業控制和軍用設備中仍被廣泛使用。

目前,市面上一部分軌跡球僅能支持PS/2或USB 接口的工作模式。在此基礎上,文章采用Cypress 公司的enCoRe? Ⅱ系列USB 控制器CY7C63813-SXC 作為核心器件(enCoRe? ⅡLow Speed USB Peripheral Controller)[1],使用C 語言編程,設計了一款在USB 和PS/2 接口模式下都能工作的軌跡球。 此軌跡球在CY4623例程(CY4623 是Cypress 公司提供的鼠標參考設計樣例)的基礎上,實現了自動識別PS/2 接口和USB 接口的算法,采集軌跡球球體在X軸、Y軸方向的移動量的算法及通過撥碼開關切換X軸、Y軸及其正方向的算法。

1 嵌入式軌跡球工作原理

自動識別USB 和PS/2 接口的軌跡球主要由主控制電路(含CY7C63813 芯片)、光耦(包括X軸、Y軸、Z軸,其中Z軸光耦是預留設計,文章沒有使用)、按鍵(L、M、R,即左鍵、中鍵、右鍵)、PS/2 接口連接器、USB 接口連接器等組成。

光耦作為產生、探測、接收紅外光線,并將紅外光信號轉換成電信號的器件,先接收球體在X軸、Y軸方向的轉動位移量,再將此位移量轉換為電信號傳送給CY7C63813 芯片,CY7C63813芯片經過數據分析處理后,通過PS/2 或USB 協議通信模塊轉換為相應協議信號,再通過相應的接口連接器傳送到上位機的相應接口。 球體在X軸、Y軸方向的轉動位移量通過USB 接口或PS/2接口傳送給上位機后,就可實現控制光標在屏幕上按照軌跡球球體轉動而移動的人機接口設備功能。

2 硬件電路設計

CY7C63813-SXC 控制器是基于enCoRe? Ⅱ內核的8 位哈佛架構微控制器,主頻可達到24MHz,內部集成有晶體振蕩器、3.3V 電源調整器和8KB 的FLASH 存儲器等,芯片不需其他外部器件就可配置成USB 或PS/2 模式。CY7C63813 芯片集成了很多功能模塊,減少了其所需的周邊器件數量,降低了成本及應用復雜度,并且其指令集針對PS/2 及USB 操作也進行了優化。

CY7C63813 芯片接收的是數字信號,根據圖1 的硬件平臺組成可知,光耦將球體在X軸、Y軸方向上的移動信號轉換為電信號后,傳送給主控制電路(其中的微控制單元MCU 就是CY7C63813 芯片)。但光耦轉換后的電信號并不是標準的數字信號,而是類似正弦波的模擬信號,此信號若直接傳送給CY7C63813 芯片,將難以被識別,需先將其整形為標準數字信號。文章采用施密特觸發反相器74HCT14D(以下簡稱74HCT14D),先將光耦轉換后的電信號整形為標準數字信號,再向CY7C63813 芯片發送。74HCT14D 是恩智浦半導體公司的一款用于波形和脈沖整形的芯片,具有施密特觸發動作和六反相緩沖器,能將緩慢變化的輸入信號轉換為穩定無抖動的輸出信號[2]。

圖1 硬件平臺組成

軌跡球球體轉動時,帶動光柵切割光耦(X軸、Y軸方向各有一個光耦,目前使用較多的光耦是美國威世公司的TCUT1300X01[3])的紅外發光二極管產生的紅外光線,光耦上的兩個光電晶體管探測器根據接收的紅外光線先后順序(根據先后順序的不同,可知光柵是順時針切割光線還是逆時針切割光線,即可知光柵也就是球體的移動方向)產生相應的電信號波形,并傳送給74HCT14D,經過波形整形后,再傳送給MCU,MCU 對數據進行處理分析(即判斷出球體在相應軸向上的移動量及方向)后,再通過相應連接的主機接口將數據傳送給主機等。

3 固件程序設計

文章采用PSoC(Programmable System on Chip)芯片開發工具編制程序(PSoC Designer)[4]。PSoC芯片是一種將微控制器、邏輯電路等模塊進行集成(集于一芯片上),并構建成一個具備信號采集及I/O處理等功能的可編程型系統。PSoC Designer 是用于PSoC 芯片開發的工具,也是由Cypress 公司開發的,該工具支持C 語言等數種編程語言,是一款按模塊化方式進行程序設計開發的工具。該工具內含各種已設計好的程序模塊,使用時,只要調用相應的程序用戶模塊集成到主程序中,就可進行程序設計了。

3.1 CY4623 例程及程序模塊引用分析

試驗安裝的PSoC Designer 是5.4 版,固件設計是以CY4623 例程[5]為基礎,增加并實現其他所需功能的算法程序代碼而完成的。用戶先下載并打開CY4623 例程,加載MSTIMER、PITIMER12、SPIM、PS2D、USB 五個用戶模塊,加載用戶模塊的同時,其會將程序代碼、寄存器、定時器等模塊所需的參數自動設置好,用戶只需調用已有的函數等便可實現相關開發。

(1)MSTIMER 用戶模塊:這是一個定時器(1ms 間隔的)用戶模塊,主要是給USB 用戶模塊進行USB 掛起處理、HID 報告閑置時使用。

(2)PITIMER12 用戶模塊:這是一個12 位的可編程的計數寄存器用戶模塊,該模塊最高能達到24MHz 的源時鐘頻率,可實現計數值的自動重新載入功能。

(3)SPIM 用戶模塊:這是將CY7C63813 芯片作為SPI 串行通信中的主設備的用戶模塊,用于SPI 串行通信。因為參照CY4623 例程實現的是光電鼠標設計,Cypress 公司的主控IC 需要與光學感應器進行SPI 串行通信,因此要用到此用戶模塊。而自動識別USB 和PS/2 接口軌跡球則無須進行SPI 串行通信,其是將SPI 串行通信的相應針腳當作GPIO 接口來使用。但為了給后續設計光電鼠標等其他產品奠定基礎,文章仍然保留了CY4623 例程中的SPIM 用戶模塊和其程序代碼。

(4)PS2D 用戶模塊:這是PS/2 設備的協議用戶模塊,要將CY7C63813 芯片作為PS/2 鼠標來使用,就必須調用此模塊。其內部已建立好完整并經過充分驗證的PS/2 鼠標協議和命令集,且其集成了USB SIE(串行接口引擎),可配合USB用戶模塊實現自動識別USB 和PS/2 應用程序的功能。

(5)USB 用戶模塊:這是USB 接口所需,要讓CY7C63813 芯片具有USB 鼠標接口,就必須采用此模塊。其內部已建立好完整且經過充分驗證的USB 協議和命令集,為控制端點建立好了符合USB 協議的底層驅動程序,能對主機發出的請求進行解碼及分配,支持 USB HID。并且可采用該模塊的USB 設置向導,設置USB 描述符等參數,以生成符合要求的USB 程序代碼。當然,使用者需要具備USB 相關的基本知識,以便更好地進行自動識別USB 和PS/2 接口軌跡球的程序設計。

以上五個模塊就是進行自動識別USB 和PS/2 接口軌跡球的程序設計需要用到的PSoC Designer 自帶的用戶模塊,用戶將以上模塊進行加載并設置好后,就建好了軟件開發基礎平臺。

3.2 CY4623 例程修改分析

CY4623 例程主要有以下三方面不滿足自動識別USB 和PS/2 接口軌跡球的功能需求,使用者需要修改和增加相應的程序代碼。

(1)自動識別USB 和PS/2 接口軌跡球要求能自動識別連接的接口類型,并能按照連接的相應接口,將數據進行轉換,實現相應的通信功能,而CY4623 例程缺少此自動識別的程序代碼。

(2)CY4623 例程實現的是光電鼠標設計,但自動識別USB 和PS/2 接口軌跡球是要求識別球體在X軸、Y軸方向上的轉動信息,以此實現控制光標移動的功能。

(3)因為不同加固軌跡球項目的結構安裝要求可能不同,自動識別USB 和PS/2 接口軌跡球的安裝方向也不會只有一個,如圖2 所示,在四個安裝方向下,都必須保證球體向上(或向下)移動時,能控制光標向Y軸正方向(或負方向)移動(球體向左或向右移動同此理),必須滿足X軸、Y軸及其正方向可互換的要求。采用撥動撥碼開關的方式,可調節X軸、Y軸及其正方向。但CY4623 例程不具備此功能。

圖2 軌跡球安裝方向示意(視角為從頂部觀看)

3.3 算法的具體實現分析

為了實現以上功能,文章研究相關算法,并根據其算法編制相應的程序代碼,主要有PS/2 接口和USB 接口的自動偵測算法,球體轉動控制光標移動算法,X軸、Y軸及其正方向可互換功能的算法。

自動識別USB 和PS/2 接口軌跡球基本功能的程序如圖3 所示,這也是軟件的程序流程圖。

圖3 自動識別USB 和PS/2 接口軌跡球基本功能

3.3.1 PS/2 接口和USB 接口的自動偵測算法及程序實現

試驗通過深入研究PS/2 協議、USB 協議(尤其是USB HID 相關部分),并參考相關文獻資料發現,PS/2 設備在上電后500ms 左右,才向主機發送BAT自檢成功代碼“0xAA”。因此,程序完全可以利用PS/2 設備發送BAT 成功代碼之前的500ms 左右的時間,檢測其連接的是主機的PS/2 接口,還是USB 接口。PS/2 接口的時鐘信號(CLOCK)和數據信號(DATA)通常是高電平信號,而USB 接口的DATA+和DATA-信號則是高速差分信號。以此為基礎設計PS/2 接口和USB 接口的自動偵測算法,算法流程見圖4。

圖4 PS/2 接口和USB 接口的自動偵測算法程序

(a)軌跡球上電后,延時50ms。程序代碼:

timer_delay_msec(50);//延時50ms。

(b)在2ms 的時間內反復偵測DATA-(即DATA)和DATA+(即CLOCK)的電平,如果有連續4 次高電平(DATA-或DATA+),就是PS/2 接口,否則進入步驟(c)。程序代碼:

INT8 samples = 4;//一個整數型[6]samples,數值為4。

while(temp1 != b1mscounter)

{if((PS2_PORT&PS2_PORT_BITS)&&(!--samples))

return(0);}//如果有連續4 次高電平,就返回0,判定為PS/2 接口。

(c)先通過設置CY7C63813 芯片的寄存器,打開USB 上拉電阻,再延時250μs,頻繁偵測DATA-和DATA+的電平,直到其中有一個出現高電平。若DATA+是高電平,便是PS/2 接口;若DATA-是高電平,便進入步驟(d)。程序代碼:

USBXCR=USBXCR_ENABLE;//開啟上拉

time_delays_100_usec();time_delays_100_usec();timer_delay_10_usec();timer_delay_10_usec();timer_delay_10_usec();timer_delay_10_usec();timer_delay_10_usec();

//通過調用多個延時函數,湊成延時250μs。

if( b1msflags & ONE_MSEC_FLAG )//采用if語句反復偵測DATA-和DATA+的電平,直到其中有一個信號出現高電平。無論哪個是高電平,都退出此if 語句。

(d)通過設置CY7C63813 的寄存器,關閉USB上拉電阻,再延時100μs,若DATA- 和DATA+都為低電平,就不是PS/2 接口,只能是USB 接口,反之亦然。程序代碼:

USBXC = 0x00;//關閉上拉

time_delays_100_usec();//延時100μs。

return(!(PS2_PORT & PS2_PORT_BITS));//CLOCK、DATA 所在的CY7C63813 的P1 端口的bit0(第0 位)、bit1(第1 位),分別與1 進行與操作(即與0x03 進行與操作),判斷這兩位是否為高電平,根據判斷結果,返回相應的數值。

仔細測算實現以上算法的程序代碼的運行所需時間,發現其小于500ms,符合PS/2 協議要求。以上算法的步驟(c)、步驟(d)中,延時的時間主要是配置寄存器后為使硬件運行穩定所需要的時間,與USB 協議、PS/2 協議都不沖突。

3.3.2 球體轉動控制光標移動算法及程序實現

因為CY4623 例程與軌跡球通過球體轉動控制光標移動的實現方式不同,研究認為可采用以下算法實現管控光標的目的,程序流程見圖5。

圖5 球體轉動控制光標移動程序

(a)每1ms 讀取一次X軸、Y軸兩個光耦所在的I/O 口,并將結果放入一個有16 個元素的數組(bOpticsArray[16])中。程序代碼:

char bOpticsArray[16];//字符[7]數組有16個元素。

(b)讀取bOpticsArray[16]中的元素,并進行比較運算,轉換為光標沿X軸、Y軸移動的增減量,從而實現球體轉動控制光標移動的功能。程序代碼:

void ProcessOptics(void)//此函數內的程序代碼將數組中的元素按順序對比數值。

3.3.3X軸、Y軸及其正方向可互換功能的算法及程序實現

因為該自動識別USB 和PS/2 接口軌跡球將會被應用到不同項目中,但不同項目的結構安裝要求可能不同,軌跡球的安裝方向也不能唯一,可采用撥動撥碼開關來調節X軸、Y軸及其正方向的方式實現此要求,此兩針腳分別為高電平或低電平,可實現四種組合方式,滿足模塊不同安裝要求。文章經過研究,認為可采用讀取球體轉動控制光標移動算法及程序實現中的數據字節函數,并在此函數中,將X軸、Y軸數據的位置對調或數值取負值,實現X軸、Y軸及其正方向的相互轉換,從而實現X軸、Y軸及其正方向可互換功能。 程序代碼:

BOOL optical_get_report(OPTICAL_REPORT*report);//定義一個指針型結構變量,實現X軸、Y軸及其正方向可互換的功能[8]。

4 試驗與驗證

文章將設計出的嵌入式軌跡球完成硬件調試和固件程序的編譯下載后,進行功能性能測驗。當軌跡球被初次插入計算機USB 接口后,計算機右下方會彈出發現新硬件提示,且在設備管理器中可看到該USB 設備的基本信息;當設備被插入計算機PS/2 接口后,重新啟動計算機系統,在設備管理器中會看到一個PS/2 Mouse 圖標。在這兩種模式下進行測試,軌跡球能實現穩定的數據通信,光標移動靈活,左中右按鍵功能正常。測試其信號波形,發現無論是PS/2 接口,還是USB 接口,信號波形都較穩定,且毛刺較少,沒有失真。

文章中的自研軌跡球,已用于龍芯、飛騰、Intel 至強及x86 等多種平臺的產品中,并配套過中標麒麟、Linux、Windows Server、Windows 10/7/xp等多款操作系統,以及這些平臺的USB、PS/2 接口,運行情況良好,沒有出現過故障或兼容性問題。并通過了以下環境試驗的驗證,運行情況良好,工作正常:

(1)低溫貯存:-55℃保溫24h,恢復常溫4h 后檢測,溫變率≤3℃/min;

(2)低溫工作:-40℃保溫4h,工作運行2h,溫變率≤3℃/min;

(3)高溫貯存:70℃保溫48h,恢復常溫4h后檢測,溫變率≤3℃/min;

(4)高溫工作:60℃保溫4h,工作運行2h,溫變率≤3℃/min。

5 結語

文章設計的基于CY7C63813-SXC 控制器的自動識別USB 和PS/2 接口軌跡球研制測試完成后,能夠實現預期功能,已投入生產并交付多個批次,可以在 USB 和PS/2 接口模式下自適應工作,可以任意調節軌跡球的安裝方向,滿足不同應用場景下的使用要求,也驗證了采用PSoC 芯片開發計算機周邊設備的可行性。

猜你喜歡
自動識別
中國自動識別技術協會
船舶模擬駕駛系統障礙物自動識別方法
基于數據挖掘的船舶航跡自動識別系統
太陽黑子自動識別與特征參量自動提取
基于衛星遙感圖像的收費站位置自動識別與校核
船舶自動識別系統對船舶救助的影響
水上消防(2019年3期)2019-08-20 05:46:08
基于改進Canny算法的道路標線自動識別及定位
自動識別系統
特別健康(2018年3期)2018-07-04 00:40:18
金屬垃圾自動識別回收箱
基于IEC61850的配網終端自動識別技術
電測與儀表(2016年6期)2016-04-11 12:06:38
主站蜘蛛池模板: 欧美日韩国产综合视频在线观看 | 久久精品人人做人人爽97| 久青草国产高清在线视频| 欧美色视频网站| 97国产在线观看| 国产精品网拍在线| 久久青草视频| 国产精品无码一二三视频| 亚洲精品免费网站| 一本久道久综合久久鬼色| 欧美不卡二区| 午夜视频日本| 欧美精品v日韩精品v国产精品| 亚洲日韩国产精品综合在线观看| 亚洲无码视频喷水| 亚洲精品欧美日本中文字幕| 97免费在线观看视频| 亚洲AV无码精品无码久久蜜桃| 波多野结衣第一页| 国产精品永久在线| 在线观看视频99| 人人妻人人澡人人爽欧美一区| 日韩免费成人| 天天干天天色综合网| 亚欧美国产综合| 国产一级α片| 欧美国产日韩在线| 久久精品丝袜高跟鞋| 91麻豆精品国产91久久久久| 亚洲男人在线| 亚洲熟女偷拍| 国产三级韩国三级理| 国产午夜精品鲁丝片| 亚洲视频二| 久久91精品牛牛| 91免费国产在线观看尤物| 91亚瑟视频| 看国产毛片| a欧美在线| 亚洲中文字幕无码爆乳| 国产成人精品午夜视频'| 欧美色丁香| 亚洲AV无码一区二区三区牲色| 强乱中文字幕在线播放不卡| Aⅴ无码专区在线观看| 国产精品区视频中文字幕 | 国产精品女人呻吟在线观看| 国产在线精彩视频二区| 国产精品永久不卡免费视频| 国产综合色在线视频播放线视| 欧美亚洲香蕉| 正在播放久久| 日韩午夜福利在线观看| 国产精品美人久久久久久AV| 欧美特黄一级大黄录像| 日韩国产综合精选| 高清码无在线看| 91久久夜色精品国产网站| 国内精自视频品线一二区| 国产福利在线观看精品| 国产电话自拍伊人| 国产99久久亚洲综合精品西瓜tv| 久久免费成人| 欧美日韩国产综合视频在线观看 | 亚洲丝袜第一页| 久久性视频| 美女视频黄频a免费高清不卡| 国内黄色精品| 一级毛片免费高清视频| 中文国产成人精品久久| 久久婷婷国产综合尤物精品| 视频在线观看一区二区| 国产成人精品日本亚洲| 久久超级碰| 欧美另类图片视频无弹跳第一页 | 欧美精品另类| 成人福利在线免费观看| 国产AV无码专区亚洲精品网站| 精品国产Ⅴ无码大片在线观看81| AⅤ色综合久久天堂AV色综合| 99激情网| 亚洲成a∧人片在线观看无码|