亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于CY7C63813-SXC 控制器軌跡球的設(shè)計與實現(xiàn)

        2022-03-24 02:34:46官茂
        長沙大學(xué)學(xué)報 2022年2期
        關(guān)鍵詞:程序代碼光標自動識別

        官茂

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

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

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

        1 嵌入式軌跡球工作原理

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

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

        2 硬件電路設(shè)計

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

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

        圖1 硬件平臺組成

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

        3 固件程序設(shè)計

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

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

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

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

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

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

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

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

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

        3.2 CY4623 例程修改分析

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

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

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

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

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

        3.3 算法的具體實現(xiàn)分析

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

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

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

        3.3.1 PS/2 接口和USB 接口的自動偵測算法及程序?qū)崿F(xiàn)

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

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

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

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

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

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

        while(temp1 != b1mscounter)

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

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

        (c)先通過設(shè)置CY7C63813 芯片的寄存器,打開USB 上拉電阻,再延時250μs,頻繁偵測DATA-和DATA+的電平,直到其中有一個出現(xiàn)高電平。若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();

        //通過調(diào)用多個延時函數(shù),湊成延時250μs。

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

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

        USBXC = 0x00;//關(guān)閉上拉

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

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

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

        3.3.2 球體轉(zhuǎn)動控制光標移動算法及程序?qū)崿F(xiàn)

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

        圖5 球體轉(zhuǎn)動控制光標移動程序

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

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

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

        void ProcessOptics(void)//此函數(shù)內(nèi)的程序代碼將數(shù)組中的元素按順序?qū)Ρ葦?shù)值。

        3.3.3X軸、Y軸及其正方向可互換功能的算法及程序?qū)崿F(xiàn)

        因為該自動識別USB 和PS/2 接口軌跡球?qū)粦?yīng)用到不同項目中,但不同項目的結(jié)構(gòu)安裝要求可能不同,軌跡球的安裝方向也不能唯一,可采用撥動撥碼開關(guān)來調(diào)節(jié)X軸、Y軸及其正方向的方式實現(xiàn)此要求,此兩針腳分別為高電平或低電平,可實現(xiàn)四種組合方式,滿足模塊不同安裝要求。文章經(jīng)過研究,認為可采用讀取球體轉(zhuǎn)動控制光標移動算法及程序?qū)崿F(xiàn)中的數(shù)據(jù)字節(jié)函數(shù),并在此函數(shù)中,將X軸、Y軸數(shù)據(jù)的位置對調(diào)或數(shù)值取負值,實現(xiàn)X軸、Y軸及其正方向的相互轉(zhuǎn)換,從而實現(xiàn)X軸、Y軸及其正方向可互換功能。 程序代碼:

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

        4 試驗與驗證

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

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

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

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

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

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

        5 結(jié)語

        文章設(shè)計的基于CY7C63813-SXC 控制器的自動識別USB 和PS/2 接口軌跡球研制測試完成后,能夠?qū)崿F(xiàn)預(yù)期功能,已投入生產(chǎn)并交付多個批次,可以在 USB 和PS/2 接口模式下自適應(yīng)工作,可以任意調(diào)節(jié)軌跡球的安裝方向,滿足不同應(yīng)用場景下的使用要求,也驗證了采用PSoC 芯片開發(fā)計算機周邊設(shè)備的可行性。

        猜你喜歡
        程序代碼光標自動識別
        自動識別系統(tǒng)
        特別健康(2018年3期)2018-07-04 00:40:18
        計算機網(wǎng)絡(luò)信息安全未來發(fā)展趨勢
        基于圖元裝接模式由程序流程圖自動生成源代碼
        軟件工程(2016年11期)2017-01-17 16:56:57
        金屬垃圾自動識別回收箱
        基于IEC61850的配網(wǎng)終端自動識別技術(shù)
        電測與儀表(2016年6期)2016-04-11 12:06:38
        Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
        電腦迷(2015年4期)2015-05-30 10:48:04
        Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
        電腦迷(2015年8期)2015-05-30 08:36:03
        Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
        電腦迷(2015年10期)2015-04-29 15:14:20
        蘭姆凹陷穩(wěn)頻工作點自動識別技術(shù)
        陳光標:巴菲特先生,我要裸捐!
        博客天下(2010年18期)2010-09-22 03:47:00
        99久久婷婷国产综合亚洲| 午夜视频福利一区二区三区| 日本午夜a级理论片在线播放| 黄片大全视频在线播放| 亚洲狠狠婷婷综合久久久久图片 | 精品乱子伦一区二区三区| 在线视频一区二区在线观看| 中文字幕国产亚洲一区| 日本最新免费二区| 国产欧美日韩在线观看| 亚洲女同一区二区久久| 国产老熟女精品一区二区| 日韩乱码人妻无码中文字幕久久| 国产成人午夜精品免费视频| 日韩成人精品一区二区三区| 久久人妻一区二区三区免费| 我把护士日出水了视频90分钟| 自拍偷拍亚洲一区| 综合图区亚洲偷自拍熟女| 91中文人妻熟女乱又乱| 明星性猛交ⅹxxx乱大交| 无码人妻AⅤ一区 二区 三区| 在线精品亚洲一区二区三区| 成人免费自拍视频在线观看| 亚洲av永久无码精品国产精品| 白白色发布在线播放国产| 国产一区二区三区四区在线视频 | 爱我久久国产精品| 亚洲国产精品成人一区| 久久亚洲av成人无码电影 | 国产精品无码人妻在线| 国产成人www免费人成看片| 国产成人精品男人的天堂网站| 国产亚洲午夜精品久久久| 国产成人无码av一区二区| 久久久亚洲欧洲日产国产成人无码 | chinesefreexxxx国产麻豆| 最大色网男人的av天堂| 国产亚洲精品熟女国产成人| 亚洲国产精品日韩av专区| 亚洲欧洲日产国码无码|