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