基于Microchip單片機(jī)及收發(fā)器實(shí)現(xiàn)的低成本LIN總線
在LIN網(wǎng)絡(luò)中,主節(jié)點(diǎn)的時(shí)鐘由高精度的晶振產(chǎn)生,從節(jié)點(diǎn)一般用RC震蕩器產(chǎn)生。在本文中,從節(jié)點(diǎn)的時(shí)鐘可以用MICROCHIP單片機(jī)的內(nèi)部RC震蕩器來(lái)實(shí)現(xiàn)。
3 LIN協(xié)議的基本知識(shí)
LIN的報(bào)文分為兩部分,一是主任務(wù),也叫報(bào)文頭;另一個(gè)部分是從任務(wù),也叫響應(yīng)場(chǎng)。如圖3所示。
主任務(wù)位于主機(jī)節(jié)點(diǎn)內(nèi)部,都是由主節(jié)點(diǎn)發(fā)出,它負(fù)責(zé)報(bào)文的進(jìn)度表、發(fā)送報(bào)文頭(HEADER)。從任務(wù)位于所有的(即主機(jī)和從機(jī))節(jié)點(diǎn)中,其中一個(gè)(主機(jī)節(jié)點(diǎn)或從機(jī)節(jié)點(diǎn))發(fā)送報(bào)文的響應(yīng)(RESP*E)。
3.1 報(bào)文頭
報(bào)文頭分為三部分,按順序分別叫同步間隔、同步字段、標(biāo)識(shí)符字段。
同步間隔是一個(gè)長(zhǎng)時(shí)間的低電平(顯性總線電平),低電平時(shí)間要大于10個(gè)位定時(shí)時(shí)間,通常為13個(gè)位定時(shí)時(shí)間。在長(zhǎng)時(shí)間的低電平之后,要跟著一個(gè)短時(shí)間的高電平(隱性總線電平),一般為1~4個(gè)位定時(shí)時(shí)間。
同步字段包含了時(shí)鐘的同步信息。它的內(nèi)容為0x55,表現(xiàn)在8個(gè)位定時(shí)中有5個(gè)下降沿(隱性跳變到顯性的邊沿)。從節(jié)點(diǎn)通過(guò)同步字段,可以使自己的總線速率與主節(jié)點(diǎn)同步。
標(biāo)識(shí)符字段定義了報(bào)文的內(nèi)容和長(zhǎng)度。其中,內(nèi)容是由6個(gè)標(biāo)識(shí)符位和2個(gè)奇偶校驗(yàn)位組成,如圖4所示。標(biāo)識(shí)符位的第5位和第6位(ID4和ID5)定義了報(bào)文數(shù)據(jù)場(chǎng)的長(zhǎng)度。
3.2 響應(yīng)場(chǎng)
響應(yīng)場(chǎng)包含數(shù)據(jù)字段和校驗(yàn)和兩部分。
數(shù)據(jù)字段由8 bit數(shù)據(jù)的字節(jié)組成,傳輸由最低位(LSB)開(kāi)始。校驗(yàn)和按照帶進(jìn)位加的方式計(jì)算,每個(gè)進(jìn)位都被加到本次計(jì)算結(jié)果的最低位。
3.3 保留的標(biāo)識(shí)符
標(biāo)識(shí)符為0x3C和0x3D的標(biāo)識(shí)符被用做診斷。其中0x3C是主機(jī)請(qǐng)求幀,它可以從主機(jī)向從機(jī)節(jié)點(diǎn)發(fā)送命令和數(shù)據(jù)。0x3D是從機(jī)響應(yīng)幀,它觸發(fā)一個(gè)從機(jī)節(jié)點(diǎn)(由一個(gè)優(yōu)先的下載幀編址)向主機(jī)節(jié)點(diǎn)發(fā)送數(shù)據(jù)。
標(biāo)識(shí)符為0x3E是由用戶定義的自由用法,標(biāo)識(shí)符為0x3F是為將來(lái)使用而嚴(yán)格保留的。
4 MICROCHIP單片機(jī)的軟硬件實(shí)現(xiàn)
4.1 硬件實(shí)現(xiàn)
主節(jié)點(diǎn)一般采用Flash比較大的MICROCHIP中檔8位單片機(jī),或者采用帶CAN控制器的高檔8位單片機(jī)或16位單片機(jī)作為控制器。時(shí)鐘采用高精度石英晶振。物理層的電平轉(zhuǎn)換采用MICROCHIP的收發(fā)器MCP2021。
從節(jié)點(diǎn)可用低成本的MICROCHIP中、低檔8位單片機(jī)。時(shí)鐘用單片機(jī)內(nèi)部自帶的RC震蕩器。內(nèi)部RC震蕩器在常溫25 ℃時(shí),精度為1%,全溫度范圍(-40 ℃~+125 ℃)內(nèi)精度為5%[1]。物理層的電平轉(zhuǎn)換采用MICROCHIP的收發(fā)器MCP2021。
評(píng)論