controller area network(can)總線是一種常見(jiàn)的現(xiàn)代通信協(xié)議,它允許不同設(shè)備之間通過(guò)共同的總線進(jìn)行通信。在can總線中,波特率是一個(gè)非常重要的參數(shù),它標(biāo)志著總線上信息傳輸?shù)乃俾?。雖然通常使用標(biāo)準(zhǔn)的波特率,但某些情況下可能需要使用特殊的波特率,例如在高噪聲環(huán)境下或需要讓通信速率降低以兼容舊設(shè)備的情況下。
在can總線中,特殊波特率的計(jì)算涉及預(yù)分頻因子和時(shí)間段。預(yù)分頻因子通常在1至1024范圍內(nèi),而時(shí)間段在1至16之間。理論上,任何波特率可以通過(guò)預(yù)分頻因子和時(shí)間段來(lái)計(jì)算。當(dāng)選用特殊波特率時(shí),需要根據(jù)波特率計(jì)算出預(yù)分頻因子和時(shí)間段;使用預(yù)分頻因子和時(shí)間段來(lái)配置can控制器和can收發(fā)器,從而實(shí)現(xiàn)特殊波特率的通信。
假設(shè)我們需要在can總線上使用特殊波特率125kbit/s。在這種情況下,我們可以通過(guò)以下步驟計(jì)算預(yù)分頻因子和時(shí)間段:
1. 確定can控制器和can收發(fā)器的時(shí)鐘頻率(通常為16mhz)。
2. 根據(jù)can控制器的位時(shí)間進(jìn)行計(jì)算。(位時(shí)間是指一個(gè)位的時(shí)間長(zhǎng)度,單位為納秒)。
3. 根據(jù)位時(shí)間和波特率計(jì)算時(shí)間段的數(shù)量,得出時(shí)間段的值。(假設(shè)時(shí)間段的值為10)
4. 將時(shí)間段的值轉(zhuǎn)換為二進(jìn)制,得出“00001001”。
5. 根據(jù)波特率和時(shí)間段的值計(jì)算預(yù)分頻因子的值。(假設(shè)預(yù)分頻因子的值為6)
6. 將預(yù)分頻因子的值轉(zhuǎn)換為二進(jìn)制,得出“00000110”。
7. 將預(yù)分頻因子和時(shí)間段的二進(jìn)制值合并,得到“0000011000001001”。
8. 將合并后的值轉(zhuǎn)換為十六進(jìn)制,得出“0x0609”。
9. 將值設(shè)置為can控制器和can收發(fā)器的寄存器,以啟用特殊波特率。
以上是一種計(jì)算特殊波特率的方法,當(dāng)然還有其他方法。但不管采用哪種方法,目的都是相同的:計(jì)算出預(yù)分頻因子和時(shí)間段,從而實(shí)現(xiàn)特殊波特率的通信。