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

        ?

        PIC32MX單片機(jī)的無同步時(shí)鐘電路HBS通信設(shè)計(jì)

        2018-04-11 09:13:57,
        關(guān)鍵詞:波特率數(shù)組字節(jié)

        ,

        (青島海信日立空調(diào)系統(tǒng)有限公司,青島 266510)

        引 言

        HBS通信具有無極性接線、抗干擾性強(qiáng)、傳輸距離長(zhǎng)等優(yōu)點(diǎn),是商用空調(diào)領(lǐng)域重要的總線通信方式。但是HBS通信對(duì)主芯片具有同步時(shí)鐘輸出的要求[1],限制了主芯片的選型。

        1 原理分析

        1.1 HBS異步串行信號(hào)的分析

        從圖1(a)可以看出,Uart發(fā)送數(shù)據(jù)時(shí),除了數(shù)據(jù)主體D0~D7,還有起始位、奇偶校驗(yàn)位和1~2個(gè)停止位[3]。起始位為低電平“0”,停止位為高電平“1”。為了敘述方便,后面的數(shù)據(jù)如無特別聲明,均以1個(gè)停止位、9 600 bps波特率為默認(rèn)的數(shù)據(jù)結(jié)構(gòu)及傳輸速率。

        圖1(b)顯示的是同步時(shí)鐘信號(hào),此信號(hào)的波特率是發(fā)送數(shù)據(jù)的兩倍,當(dāng)數(shù)據(jù)波特率為9 600 bps時(shí),同步時(shí)鐘信號(hào)的波特率為19 200 bps。

        圖1 異步串行信號(hào)波形圖

        圖1(c)是原數(shù)據(jù)與同步時(shí)鐘信號(hào)調(diào)制后的波形,此波形輸入到MM1192芯片的6引腳。

        圖1(d)是HBS的差分信號(hào),即屏蔽雙絞線中測(cè)出的信號(hào)波形。

        需要注意的是,UART是先發(fā)D0后發(fā)D7,而SPI(Serial Peripheral Interface)則相反,是先發(fā)D7后發(fā)D0。

        1.2 同步信號(hào)模擬異步信號(hào)的原理分析

        無論使用同步發(fā)送異步接收法還是PWM模擬同步時(shí)鐘法,都需要確保圖1(d)中的HBS差分信號(hào)是相同的。PIC32MX系列單片機(jī)雖然無同步時(shí)鐘端口,但是使用SPI同步時(shí)鐘發(fā)送的方法,適當(dāng)?shù)倪M(jìn)行數(shù)據(jù)變換,可以實(shí)現(xiàn)和圖1(c)相同的信號(hào)波形,輸入MM1192的6引腳。從而在通信數(shù)據(jù)線中得到和圖1(d)相同的HBS差分信號(hào)波形。

        此方法成功的關(guān)鍵是進(jìn)行準(zhǔn)確的數(shù)據(jù)變換,11個(gè)數(shù)據(jù)引腳調(diào)制后是22個(gè)引腳,最少需要3個(gè)字節(jié)24引腳,再加上一個(gè)延時(shí)字節(jié),共4個(gè)字節(jié)。通常有兩種變換方法:一是將起始位單獨(dú)變換為1個(gè)字節(jié),數(shù)據(jù)位變換為2個(gè)字節(jié),奇偶校驗(yàn)位及停止位變換為最后一個(gè)字節(jié),如圖2所示的劃分;二是從起始位到停止位,按順序每8個(gè)引腳劃為一個(gè)字節(jié),如圖3所示。由于第1種數(shù)據(jù)變換方式實(shí)現(xiàn)上相對(duì)簡(jiǎn)單,本次設(shè)計(jì)采用第1種方式。

        圖2 第1種數(shù)據(jù)變換分組方式

        圖3 第2種數(shù)據(jù)變換分組方式

        2 同步無調(diào)制發(fā)送異步接收HBS的硬件設(shè)計(jì)

        2.1 MM1192的功能分析

        本次設(shè)計(jì)應(yīng)用MITSUMI生產(chǎn)的SOP MM1192通信芯片。該芯片主要由發(fā)送和接收兩部分組成。接收部分的工作原理為:MM1192通過pinl5-IN(2)、pinl6-IN(1)采集總線上的差分信號(hào),之后與芯片內(nèi)部的2.5 V相比較,再將比較結(jié)果放大后轉(zhuǎn)換為“1”或“0”數(shù)字信號(hào),最終在pin1-Reception DATA OUT腳輸出。發(fā)送部分工作原理為:MM1192通過pin6-DATA IN腳采集“1”或“0”數(shù)字信號(hào),之后經(jīng)過觸發(fā)器判斷高低電平,再通過與非門觸發(fā)內(nèi)部三極管導(dǎo)通,最終在pin9-OUT(A)和pinl0-OUT(B)輸出模擬差分信號(hào),實(shí)現(xiàn)數(shù)據(jù)的差分信號(hào)傳輸[4]。

        2.2 硬件電路的設(shè)計(jì)

        由于接收部分采用以前的成熟電路,而且接收信號(hào)也無變化,不作展開分析,只對(duì)發(fā)送部分電路進(jìn)行分析及再設(shè)計(jì),如圖4、圖5所示。

        圖4 異步有同步時(shí)鐘的發(fā)送電路

        圖5 同步無調(diào)制發(fā)送電路

        原電路如圖5所示,通過三極管的組合實(shí)現(xiàn)邏輯和運(yùn)算。其中Q23、Q24通過異或連接,其邏輯運(yùn)算關(guān)系如下:

        根據(jù)德摩根定理有以下運(yùn)算成立:

        這個(gè)邏輯非由Q25實(shí)現(xiàn)。

        變更后電路如圖5所示,由于PIC32MX系列芯片SPI在空閑時(shí)是低電平[3],而MM1192的空閑信號(hào)輸入要求是高電平,所以新電路需要保留一個(gè)三極管在輸入MM1192之前進(jìn)行電平反轉(zhuǎn)。R151作為芯片輸出信號(hào)的上拉電阻,C142作為濾波電容也保留。

        3 同步無調(diào)制發(fā)送異步接收HBS的軟件設(shè)計(jì)

        3.1 UART及SPI端口的初始化

        同步無調(diào)制發(fā)送異步接收通信模塊的軟件流程圖如圖6所示,其中初始化和翻譯表制作是重要的環(huán)節(jié),進(jìn)行詳細(xì)說明。

        圖6 軟件流程圖

        UART初始化如下:

        SYS_INT_Disable(); //初始化時(shí),先關(guān)掉所有中斷

        U1BRG = 259;//40 MHz的設(shè)定主頻時(shí),波特

        //率為9600bps

        U1MODEbits.PDSEL=2;//首字節(jié)奇校驗(yàn)接收

        U1MODEbits.STSEL =0;//1個(gè)停止位

        U1STAbits.URXEN=1;//允許接收

        IEC1bits.U1RXIE=1;//允許接收中斷觸發(fā)

        U1STAbits.UTXEN=0;//UART的發(fā)送中斷是不需要

        //的,關(guān)閉

        IEC1bits.U1TXIE=0;//UART的發(fā)送中斷使能是不

        //需要的,關(guān)閉

        SPI初始化如下:

        SPI_BaudRateSet(&SPI1BRG,&SYS_CLK_Frequency, 19200 );

        //19200bps波特率設(shè)定,兩倍頻于UART接收頻率

        SPI1CON = 0x18030;

        SPI1CONbits.MODE32 = 1;//使用32位寄存器發(fā)送模式

        SPI2CONbits.STXISEL =1;

        SPI2CONbits.ON = 1;

        SYS_INT_Enable();//初始化結(jié)束后,打開所有中斷

        同步串口通信沒有起始位、停止位和奇偶校驗(yàn)位,所以和異步串口通信不同,不需要相關(guān)的軟件設(shè)置[5]。由于SPI發(fā)送沒有外部的調(diào)制電路,需要兩倍頻于UART的設(shè)置,才可以得到相同的波形。

        3.2 異步轉(zhuǎn)同步翻譯表的制作

        首先,需要定義5個(gè)unsigned char型數(shù)組,用于存放異步轉(zhuǎn)同步時(shí)查表的數(shù)據(jù)。本設(shè)計(jì)翻譯表的制作采用圖2的分組方法。

        Table0[256]——此數(shù)組用于存儲(chǔ)起始位“0”的轉(zhuǎn)化數(shù)據(jù),因?yàn)?~255所有數(shù)據(jù)的起始位均相同,所以此數(shù)組中的所有數(shù)據(jù)均為0x01。

        Table1[256]——此數(shù)組用于存儲(chǔ)原始數(shù)據(jù)中的D0、D1、D2、D3 。由于UART和SPI數(shù)據(jù)發(fā)送的數(shù)據(jù)順序相反[3,5],而且外部電路SPI發(fā)送少了一組三極管反向,需要將原二進(jìn)制數(shù)據(jù)左右顛倒,然后再“0”或“1”反轉(zhuǎn)。此部分?jǐn)?shù)據(jù)轉(zhuǎn)化的實(shí)現(xiàn)使用了Turbo C軟件編程。轉(zhuǎn)化結(jié)果如下:

        const unsigned char Table1[256]={//第二字節(jié) D0~D3

        0x55,0x15,0x45,0x5,0x51,0x11,0x41,0x1,0x54,0x14, //0~9

        0x44,0x4,0x50,0x10,0x40,0x0,0x55,0x15,0x45,0x5,//10~19

        0x51,0x11,0x41,0x1,0x54,0x14,0x44,0x4,0x50,0x10, //20~29

        0x40,0x0,0x55,0x15,0x45,0x5,0x51,0x11,0x41,0x1,//30~39

        0x54,0x14,0x44,0x4,0x50,0x10,0x40,0x0,0x55,0x15, //40~49

        0x45,0x5,0x51,0x11,0x41,0x1,0x54,0x14,0x44,0x4,//50~59

        0x50,0x10,0x40,0x0,0x55,0x15,0x45,0x5,0x51,0x11, //60~69

        0x41,0x1,0x54,0x14,0x44,0x4,0x50,0x10,0x40,0x0,//70~79

        0x55,0x15,0x45,0x5,0x51,0x11,0x41,0x1,0x54,0x14, //80~89

        0x44,0x4,0x50,0x10,0x40,0x0,0x55,0x15,0x45,0x5,//90~99

        0x51,0x11,0x41,0x1,0x54,0x14,0x44,0x4,0x50,0x10, //100~109

        0x40,0x0,0x55,0x15,0x45,0x5,0x51,0x11,0x41,0x1,//110~119

        0x54,0x14,0x44,0x4,0x50,0x10,0x40,0x0,0x55,0x15, //120~129

        0x45,0x5,0x51,0x11,0x41,0x1,0x54,0x14,0x44,0x4,//130~139

        0x50,0x10,0x40,0x0,0x55,0x15,0x45,0x5,0x51,0x11, //140~149

        0x41,0x1,0x54,0x14,0x44,0x4,0x50,0x10,0x40,0x0,//150~159

        0x55,0x15,0x45,0x5,0x51,0x11,0x41,0x1,0x54,0x14, //160~169

        0x44,0x4,0x50,0x10,0x40,0x0,0x55,0x15,0x45,0x5,//170~179

        0x51,0x11,0x41,0x1,0x54,0x14,0x44,0x4,0x50,0x10, //180~189

        0x40,0x0,0x55,0x15,0x45,0x5,0x51,0x11,0x41,0x1,//190~199

        0x54,0x14,0x44,0x4,0x50,0x10,0x40,0x0,0x55,0x15, //200~209

        0x45,0x5,0x51,0x11,0x41,0x1,0x54,0x14,0x44,0x4,//210~219

        0x50,0x10,0x40,0x0,0x55,0x15,0x45,0x5,0x51,0x11, //220~229

        0x41,0x1,0x54,0x14,0x44,0x4,0x50,0x10,0x40,0x0,//230~239

        0x55,0x15,0x45,0x5,0x51,0x11,0x41,0x1,0x54,0x14, //240~249

        0x44,0x4,0x50,0x10,0x40,0x00 //250~255

        };

        Table2[256]——此數(shù)組用于存儲(chǔ)原始數(shù)據(jù)中的D4、D5、D6、D7 。此部分的轉(zhuǎn)化和Table1[256]相似。轉(zhuǎn)化結(jié)果如下:

        const unsigned char Table2[256]={//第三字節(jié) D4、D5、D6、D7

        0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,//0~9

        0x55,0x55,0x55,0x55,0x55,0x55,0x15,0x15,0x15,0x15,//10~19

        0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,//20~29

        0x15,0x15,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,//30~39

        0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x5,0x5,//40~49

        0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,//50~59

        0x5,0x5,0x5,0x5,0x51,0x51,0x51,0x51,0x51,0x51,//60~69

        0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,//70~79

        0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,//80~89

        0x11,0x11,0x11,0x11,0x11,0x11,0x41,0x41,0x41,0x41,//90~99

        0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,//100~109

        0x41,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,//110~119

        0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x54,0x54,//120~129

        0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,//130~139

        0x54,0x54,0x54,0x54,0x14,0x14,0x14,0x14,0x14,0x14,//140~149

        0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,//150~159

        0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,//160~169

        0x44,0x44,0x44,0x44,0x44,0x44,0x4,0x4,0x4,0x4,//170~179

        0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,

        //180~189

        0x4,0x4,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,//190~199

        0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x10,0x10,//200~209

        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,//210~219

        0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x40,//220~229

        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,//230~239

        0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,

        //240~249

        0x0,0x0,0x0,0x0,0x0,0x0

        //250~255

        };

        Table30[256]——此數(shù)組用于存儲(chǔ)原始數(shù)據(jù)中的奇偶校驗(yàn)位和停止位。由于數(shù)據(jù)發(fā)送時(shí),頭碼使用奇校驗(yàn),后面的數(shù)據(jù)使用偶校驗(yàn),所以需要做成兩個(gè)數(shù)組。此數(shù)組為奇校驗(yàn)翻譯表,后面的Table31是偶校驗(yàn)翻譯表。這兩個(gè)數(shù)組全部由0x40和0x00組成,只是0x40和0x00在數(shù)組中的位置不同。

        Table31[256]——此數(shù)組用于存儲(chǔ)原始數(shù)據(jù)偶校驗(yàn)位和停止位。

        舉例說明:當(dāng)HBS通信需要發(fā)送數(shù)據(jù)頭碼“0x23”時(shí),需要以19 200bps的波特率連續(xù)發(fā)送 Table0[0x23]、Table1[0x23]、Table2[0x23]、Table30[0x23]。

        3.3 問題及解決

        問題1的現(xiàn)象為軟件里計(jì)數(shù)器顯示,在發(fā)送ACK第2個(gè)字節(jié)時(shí),示波器上才出現(xiàn)第1個(gè)字節(jié)的波形。此時(shí)SPIxCONbit.STXISEL=0x00,本意是最后一個(gè)位移出SPISR寄存器后進(jìn)入發(fā)送中斷[5]。但是經(jīng)過測(cè)試發(fā)現(xiàn),數(shù)據(jù)剛放進(jìn)SPIx發(fā)送緩存區(qū)SPIxBUF,就觸發(fā)了發(fā)送中斷。

        發(fā)送中斷中的發(fā)送數(shù)據(jù)計(jì)數(shù)器為2時(shí),實(shí)際上第1個(gè)字節(jié)才剛剛發(fā)完,導(dǎo)致軟件的自發(fā)自收檢測(cè)出錯(cuò)。問題的原因是SPIxCONbit.STXISEL=0x00起作用是有條件的,需要使能增強(qiáng)緩存器模式才有效[5]。最后,將SPIxCON寄存器的bit16設(shè)置為1,將SPIx設(shè)置為增強(qiáng)模式后,問題解除。

        問題2的現(xiàn)象為,用Checker串口監(jiān)測(cè)軟件不能正常顯示出最后一位字節(jié)。但是用示波器看波形時(shí),最后一個(gè)字節(jié)已經(jīng)發(fā)送了,對(duì)方設(shè)備也回復(fù)了信息。

        一幀數(shù)據(jù)被發(fā)送完畢,發(fā)送中斷被立即關(guān)閉,導(dǎo)致軟件一直處于發(fā)送未完成的狀態(tài)。因?yàn)榘l(fā)送完畢標(biāo)記位通常在發(fā)送中斷中處理,關(guān)閉中斷后就無法進(jìn)入發(fā)送中斷了。確保發(fā)送完畢標(biāo)記位已經(jīng)設(shè)置完成后,再關(guān)閉發(fā)送中斷,問題解除。

        4 測(cè)試結(jié)果與分析

        分別測(cè)試原波形和本文設(shè)計(jì)的同步無調(diào)制發(fā)送的波形(單片機(jī)發(fā)送I/O口和兩根通信線間的差分信號(hào))。實(shí)際波形如圖7和圖8所示,非常相近,都可以被正常接收。本設(shè)計(jì)在進(jìn)行數(shù)據(jù)翻譯時(shí),在每個(gè)字節(jié)之間有意加入了一些延時(shí),使得通信波形更容易被接收端識(shí)別響應(yīng)。此方法發(fā)送的數(shù)據(jù),每個(gè)字節(jié)之間有0.9 ms的延時(shí),可以改變翻譯表的分組方法,去掉延時(shí)來縮短字節(jié)間的時(shí)隙。經(jīng)過測(cè)試確認(rèn),字節(jié)之間少量的延時(shí)可令數(shù)據(jù)通信更加穩(wěn)定。

        圖7 有同步時(shí)鐘信號(hào)的發(fā)送數(shù)據(jù)和差分信號(hào)波形

        圖8 同步無調(diào)制發(fā)送和差分信號(hào)波形

        [1] 金國(guó)華. 通信芯片MM1192在多聯(lián)機(jī)控制系統(tǒng)中的應(yīng)用[J].重慶工學(xué)院學(xué)報(bào),2009,23(4).

        [2] 李希志,曹銳,張獻(xiàn)林,等.無時(shí)鐘同步信號(hào)單片機(jī)實(shí)現(xiàn)HOMEBUS總線通信的方法:中國(guó),201110256025.4[P].2018-01-8.

        [3] Microchip. PIC32MX系列單片機(jī)手冊(cè), 2014.

        [4] MITSUMI.HBS-Compatible Driver and Receiver Monolithic IC MM1192,2017.

        [5] Microchip.Section 23 Serial Peripheral Interface(SPI), DS61106G.

        石靖峰(碩士),主要從事中央空調(diào)控制系統(tǒng)研發(fā)工作。

        猜你喜歡
        波特率數(shù)組字節(jié)
        JAVA稀疏矩陣算法
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
        智能制造(2020年5期)2020-07-03 06:24:00
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
        基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
        簡(jiǎn)談MC7字節(jié)碼
        尋找勾股數(shù)組的歷程
        C*Core芯片SCI串口波特率容限優(yōu)化
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        国产精品一区二区三区自拍| 久久精品国产免费观看99| 伊人婷婷色香五月综合缴激情| 国产精品一级av一区二区| 久久老熟女一区二区三区| 漂亮人妻被强了完整版| 亚洲av成人噜噜无码网站| 亚洲av无码av日韩av网站| 岛国大片在线免费观看| 丝袜美女美腿一区二区| 性生大片免费观看性少妇| 亚洲人成网站在线播放2019| 中文字幕丰满乱子无码视频| 日本一区午夜艳熟免费 | 少妇激情一区二区三区99| 人人人妻人人澡人人爽欧美一区| 中国凸偷窥xxxx自由视频| 无码一区久久久久久久绯色AV| 亚洲国产综合性感三级自拍| 韩国一区二区三区黄色录像| 成人午夜高潮a∨猛片| 亚洲精品一区久久久久久| 专区亚洲欧洲日产国码AV| 精品一区二区三区不老少妇| 日韩一区二区三区人妻免费观看| 中国午夜伦理片| 久久久久亚洲av无码专区导航| 一区二区三区免费视频网站| 久久精品伊人久久精品伊人| av一区二区三区在线| 国产精品午夜爆乳美女视频| 亚洲色欲久久久综合网 | 曰本无码人妻丰满熟妇啪啪| 亚洲国产中文在线二区三区免| 日韩精品一区二区av在线| 男女射精视频在线观看网站| 乱码av麻豆丝袜熟女系列 | 呦泬泬精品导航| 亚洲熟女一区二区三区不卡 | 久久久国产精品黄毛片| 真人做人试看60分钟免费视频|