華北區(qū)域:
李經(jīng)理 15343445592
華南區(qū)域:
馮經(jīng)理 18026777082
華東區(qū)域:
文經(jīng)理 13544971592
華中區(qū)域:
葉經(jīng)理 18127585813
技術(shù)支持:
葉工 13501587940
為了實(shí)現(xiàn)磁致伸縮傳感器與上位機(jī)的交互,研制了一種由高檔8位單片機(jī)ATmega128控制的SSI-USB轉(zhuǎn)換器。通過對(duì)SSI協(xié)議規(guī)范的研究,以及對(duì)由PDIUSBD12實(shí)現(xiàn)的USB接口電路的研究,提出了相關(guān)的軟硬件設(shè)計(jì)。最終實(shí)現(xiàn)了SSI信號(hào)與USB信號(hào)的相互轉(zhuǎn)換,從而實(shí)現(xiàn)了磁致伸縮傳感器與上位機(jī)的通信。
1、SSI協(xié)議規(guī)范及總體設(shè)計(jì)
SSI通訊協(xié)議是一種串行通信協(xié)議,其中SSI全稱為同步串行接口(Synchronous Serial interface)。SSI傳輸過程中,有24/25/26 3種編碼模式。SSI信號(hào)包括差分同步時(shí)鐘信號(hào)CLOCK+、CLOCK-,差分?jǐn)?shù)據(jù)信號(hào)DATA+、DATA-,電源VCC與地GND。通過差分方式傳輸碼值提高了抗干擾的能力,接線簡(jiǎn)單,增加了系統(tǒng)控制的可靠性。
SSI通信協(xié)議的雙方,一方發(fā)送時(shí)鐘信號(hào),另一方在這個(gè)時(shí)鐘脈沖信號(hào)的控制下從最高有效位(MSB )開始同步傳輸數(shù)據(jù)。SSI信號(hào)傳輸時(shí)序圖如圖1所示。其中D0~Dn為數(shù)據(jù)信號(hào),T為一個(gè)時(shí)鐘信號(hào)周期的持續(xù)時(shí)間;Tm為單穩(wěn)觸發(fā)時(shí)間,Tp為數(shù)據(jù)傳輸間隔,并且Tp≥Tm;MSB為最高位,LSB為最低位。
SSI-USB轉(zhuǎn)換器的設(shè)計(jì)主要包含2部分:①向下配置參數(shù)部分,即通過上位機(jī)界面對(duì)傳感器的相關(guān)參數(shù)進(jìn)行設(shè)定,設(shè)定好后通過 USB接口傳送給SSI-USB轉(zhuǎn)換器 ,然后SSI-USB轉(zhuǎn)換器再將接收到的配置參數(shù)信號(hào)轉(zhuǎn)化為SSI信號(hào)傳送給磁致伸縮傳感器。②上傳測(cè)量結(jié)果部分,即磁致伸縮傳感器將測(cè)量結(jié)果通過SSI接口傳送給SSI-USB轉(zhuǎn)換器,然后SSI-USB轉(zhuǎn)換器再將其轉(zhuǎn)化為USB信號(hào)傳送給上位機(jī)供分析計(jì)算。
2、硬件設(shè)計(jì)
SSI-USB轉(zhuǎn)換器的硬件電路部分主要包括3部分: (1)起主控作用的單片機(jī);(2)與磁致伸縮傳感器相連的SSI接口電路;(3)與上位機(jī)相連的USB接口電路。
2.1 CPU及SSI接口部分電路
設(shè)計(jì)中CPU采用的是AVR單片機(jī)AT-mega128,ATmega128是8位系列單片機(jī)中配置最高的一款單片機(jī) ,應(yīng)用及其廣泛。在SSI接口部分電路的設(shè)計(jì)中采用差分平衡型收發(fā)器芯片MAX490將時(shí)鐘信號(hào)SSI_CLK和數(shù)據(jù)信號(hào)SSI_DATA分別轉(zhuǎn)化為符合SSI通信協(xié)議規(guī)范的差分信號(hào)CLK+, CLK-,DATA+,DATA-信號(hào)。為了保證數(shù)據(jù)的高速傳輸及傳輸?shù)目煽啃?,設(shè)計(jì)中采用高速光耦6N137將SSI_CLK和SSI_DATA信號(hào)與單片機(jī)的 SSI_CLK1和SSI_DATA1信號(hào)進(jìn)行隔離。并且6N137對(duì)輸入信號(hào)具有整形的作用 ,輸入的方波信號(hào)經(jīng)137輸出后 ,輸入信號(hào)原本波形較緩的上升沿和下降沿得到改善。
磁致伸縮傳感器的測(cè)量結(jié)果需要傳遞到上位機(jī)供用戶分析計(jì)算 ,且要求滿足一定的更新頻率如3ms、2ms、1ms、0.15ms等。采用普通 I/O口模擬SSI通信的方式 ,由于受到系統(tǒng)時(shí)鐘周期的限制無法達(dá)到如此高的更新頻率,故在設(shè)計(jì)上采用SPI的主從通信 (即SSI-USB轉(zhuǎn)換器作為主機(jī),磁致伸縮傳感器作為從機(jī) )代替SSI通信,將SCK腳和MISO腳引出來分別定義為SSI_CLK1和SSI_DATA1。即CPU作為主機(jī)發(fā)送時(shí)鐘信號(hào),傳感器作為從機(jī)在時(shí)鐘脈沖的控制下向主機(jī)傳送數(shù)據(jù)信號(hào)。而配置參數(shù)的過程中因?yàn)閷?duì)數(shù)據(jù)傳送速度沒有過高的要求,可以通過采用普通I/O口模擬SSI通信方式實(shí)現(xiàn)。同樣是SCK腳和MISO腳,但是與上傳測(cè)量結(jié)果不同之處是此時(shí)SCK腳作為數(shù)據(jù)輸出腳,MISO腳作為時(shí)鐘輸入腳 ,同時(shí)將MISO腳接到INT1腳 ,用于捕獲傳感器發(fā)送的時(shí)鐘信號(hào)。
2.2 USB接口電路
設(shè)計(jì)中利用PDIUSBD12芯片來實(shí)現(xiàn)USB接口,PDIUS2BD12是一款性價(jià)比很高的 USB器件,與任何外部微控制器/微處理器實(shí)現(xiàn)高速并行連接 (2M字節(jié)/s)。USB設(shè)備接口電路的硬件設(shè)計(jì)主要以PDIUSBD12為中心 ,設(shè)計(jì)它與USB物理接口及微控制器之間的連接。引腳A0通過電阻和地連接,這樣微控制器可以向PDIUS-BD12寫數(shù)據(jù)或向PDIUSBD12讀取數(shù)據(jù)。PDIUSBD12的GL _N接LED,對(duì)其工作狀態(tài)進(jìn)行監(jiān)控, LED在USB被連接時(shí)會(huì)發(fā)光,在進(jìn)行數(shù)據(jù)傳輸時(shí)會(huì)閃爍。設(shè)計(jì)中USB總線采用的是設(shè)備自供電,因此將USB接口的VBUS腳懸空。R7、R8為串聯(lián)終端電阻。PDIUSBD12片內(nèi)集成了6~8MHz時(shí)鐘乘法PLL,這樣就可以使用低成本的6MHz晶振,E-MI也隨之降低。
3、軟件設(shè)計(jì)
在SSI-USB轉(zhuǎn)換器的軟件設(shè)計(jì)部分,由于在上傳傳感器的測(cè)量結(jié)果的過程中要使用SPI通信代替SSI通信以實(shí)現(xiàn)高速傳輸?shù)哪康?,因此要?duì)SPI進(jìn)行初始化,此外也要對(duì)I/O和USB進(jìn)行初始化,即開機(jī)啟動(dòng)時(shí)要對(duì)系統(tǒng)進(jìn)行初始化。初始化工作完成后就進(jìn)入while循環(huán),為了保證計(jì)算機(jī)已經(jīng)完成對(duì)SSI-USB轉(zhuǎn)換器的插入檢測(cè)和枚舉,利用定時(shí)器0設(shè)置6s開機(jī)啟動(dòng)延時(shí),6s延時(shí)只在開機(jī)啟動(dòng)時(shí)執(zhí)行一次。延時(shí)時(shí)間到之后,不斷查詢上位機(jī)是否發(fā)送命令 ,若接收到命令再判斷是什么命令,然后去執(zhí)行相應(yīng)命令對(duì)應(yīng)的服務(wù)程序。
在通過上位機(jī)界面對(duì)傳感器進(jìn)行配置參數(shù)的過程中,使用INT1來捕獲傳感器發(fā)送的時(shí)鐘信號(hào)的上升沿,并在中斷服務(wù)程序中從最高有效位開始傳送數(shù)據(jù)。每次中斷,傳送一個(gè)數(shù)據(jù)有效位。其中的中斷服務(wù)程序如下:
void Master_Write ( )
{if( IOSendData&0x80) Set_Data;//發(fā)送數(shù)據(jù)的最高位
elseClear_Data;
IOSendData < < = 1;//數(shù)據(jù)左移一位,將下一位要傳送的數(shù)據(jù)移至最高位Int1Num + + ;}
在上傳傳感器的測(cè)量結(jié)果的過程中 ,通過定時(shí)器1來實(shí)現(xiàn)0.15ms、1 ms、2ms、3ms的更新頻率,在定時(shí)器1中斷服務(wù)程序中將更新數(shù)據(jù)的標(biāo)志位Data _Flag置位,后面將依據(jù)此標(biāo)志決定是否更新數(shù)據(jù)。由于SSI信號(hào)的編碼模式是24位或25位或26位,本設(shè)計(jì)中統(tǒng)一定義為32位 ,其中不用的高位全部置為0。在更新數(shù)據(jù)函數(shù)執(zhí)行完后,將更新后的數(shù)據(jù)通過USB接口上傳給上位機(jī)。其中更新數(shù)據(jù)函數(shù)如下:void data_sample (void)
{uint i = 0;
CLI( ) ;
counter = 4;
SEI( ) ;
switch ( interval)//設(shè)置定時(shí)器1的計(jì)數(shù)初值;從而分別實(shí)現(xiàn)3m s, 2ms,1ms,0.15ms的更新頻率
{case 0: SAMPLE_TIME =65536-1500;
break;
case1: SAMPLE_TIME = 65536-1000;
break;
case 2: SAMPLE_TIME = 65536-500;
break;
case 3: SAMPLE_TIME = 65536 -250;
break;
default:
break;}
timer1_init( ) ;//啟動(dòng)定時(shí)器1
while ( counter > 0 )
{if(Data_Flag = = 1)//讀傳感器的測(cè)量結(jié)果并存儲(chǔ),以便向上位機(jī)傳送
{databuff0 [ 0 ] = Read_Data1 [ 0 ];
databuff0 [ 1 ] = Read_Data1 [ 1 databuff0 [ 2 ] = Read_Data1 [ 2 ];databuff0 [ 3 ] = Read_Data1 [ 3 ]; Data_Flag = 0;
counter = counter - 4;}}
TCCR1B = 0x00;}];
4、結(jié) 論
文中研究了一種用于磁致伸縮傳感器的SSI-USB轉(zhuǎn)換器,實(shí)現(xiàn)了上位機(jī)與磁致伸縮傳感器的通信。一方面實(shí)現(xiàn)通過上位機(jī)界面對(duì)傳感器進(jìn)行參數(shù)配置;另一方面實(shí)現(xiàn)將傳感器的測(cè)量結(jié)果高速傳給上位機(jī)供分析計(jì)算。技術(shù)上在SSI接口部分采用SPI的主從通信代替SSI通信,實(shí)現(xiàn)了高速傳輸數(shù)據(jù)的目標(biāo)。并且采用價(jià)格便宜,接口方便 ,可靠性高的PDIUSBD12芯片搭建USB接口電路與計(jì)算機(jī)通信,使該SSI-USB轉(zhuǎn)換器的應(yīng)用具有普遍性。同時(shí)也為SSI-USB轉(zhuǎn)換器應(yīng)用在其他領(lǐng)域提供了參考。
聯(lián)系方式:
華北區(qū)域:李經(jīng)理 15343445592
華南區(qū)域:馮經(jīng)理 18026777082
華東區(qū)域:文經(jīng)理 13544971592
華中區(qū)域:葉經(jīng)理 18127585813
技術(shù)支持:葉工 13501587940?
郵箱:wenlan@szbadens.com
地址:廣東省深圳市寶安區(qū)西鄉(xiāng)街道灣區(qū)人工智能產(chǎn)業(yè)園B棟410