ADuC703x系列LIN波特率計算
簡介
本文引用地址:http://2s4d.com/article/185754.htm本應(yīng)用筆記旨在讓用戶熟悉用于ADI公司ADuC703x系列器件UART通信的除數(shù)值COMDIV0、COMDIV1和COMDIV2的計算。本應(yīng)用筆記假定用戶熟悉本地互連網(wǎng)絡(luò)(LIN) 2.0規(guī)范。
本文分為以下三部分:
● LIN幀報頭:本部分說明LIN幀報頭和同步字節(jié)。
● LIN波特率計算:本部分說明一種使用LIN硬件同步(LHS)功能來計算UART除數(shù)值的方法。
● LIN波特率計算C代碼示例:本部分提供LIN波特率計算部分所述計算的C代碼實(shí)現(xiàn)示例。
LIN幀報頭
標(biāo)準(zhǔn)LIN通信幀如圖1所示,它分為如下部分:斷開符號、同步字節(jié)、受保護(hù)標(biāo)識符、數(shù)據(jù)和校驗(yàn)和。
圖1. LIN幀
●斷開符號表示LIN分包的開始。
●同步字節(jié)標(biāo)定從機(jī)的波特率。
●受保護(hù)標(biāo)識符用于識別從機(jī)。
●校驗(yàn)和既可以是根據(jù)發(fā)送數(shù)據(jù)計算的傳統(tǒng)校驗(yàn)和,也可以是根據(jù)受保護(hù)標(biāo)識符和數(shù)據(jù)計算的擴(kuò)展校驗(yàn)和。
圖2更加詳細(xì)地顯示了同步字節(jié),它是以主機(jī)所需的波特率發(fā)送的字節(jié)0xAA.確定主機(jī)比特率的標(biāo)準(zhǔn)方法是測量從第一個下降沿到第五個下降沿的時間,然后將此值除以8,便得到所需的比特率。此值可以用于計算UART除數(shù)值。具體計算詳見后續(xù)部分。本應(yīng)用筆記假設(shè)用戶已設(shè)置LHS MMR來為同步字節(jié)的全部8位計時(LHSCON1 = 0x62)。
圖2. LIN同步字節(jié)
LIN波特率計算
使用LHS系統(tǒng),用戶在收到同步字節(jié)后會得到LHSVAL0中的值。LHSVAL0包含8 TBIT的等效值,此值用于產(chǎn)生UART除數(shù)COMDIV0、COMDIV1和小數(shù)除數(shù)COMDIV2的值。有關(guān)UART的更多信息,請參閱相關(guān)ADuC703x數(shù)據(jù)手冊。
為利用標(biāo)準(zhǔn)波特率發(fā)生器計算COMDIV0/COMDIV1值,需使用如下基本UART方程式:
其中:
DL為COMDIV0和COMDIV1的值。
CD為時鐘分頻比。
就LHSVAL0而言,所需的波特率如下:
(LHSVAL0采用內(nèi)部5.12 MHz時鐘,假設(shè)將LHSCON1配置為測量8 TBIT.)將標(biāo)準(zhǔn)波特率方程式與所需波特率方程式合并:
僅使用標(biāo)準(zhǔn)波特率發(fā)生器方程式可得出所需的COMDIV0/ COMDIV1值。
為提高精度,使用ADuC703x小數(shù)除數(shù)和以上針對標(biāo)準(zhǔn)波特率發(fā)生器計算的DL值(COMDIV0/COMDIV1)。使用小數(shù)除數(shù)的方程式如下:
其中,M和N為COMDIV2值。
評論