LPC23XX CAN波特率的計算

2021-10-03 10:14:15 字數 1658 閱讀 9491

1.首先確定pll輸入時鐘源

lpc2300系列有三個可供選擇的時鐘源,分別為:內部rc振盪器、主振盪器和rtc振盪器。

2.然後確定系統時鐘頻率

pll頻率引數 引數

描述pll輸入時鐘的頻率(時鐘源頻率)

系統時鐘頻率

npllcfg暫存器的nsel位的pll預分頻器值(pllcfg nsel欄位+1)

mpllcfg暫存器中msel位的pll倍頻器值(pllcfg 

msel欄位+1)

pll內部參考頻率,被n分頻。

例如lpc2300.s檔案中有如下配置:

則可確定pll時鐘源為主振盪器,n為1,m為12。比如主振盪器的頻率為12mhz,根據上邊公式可計算出系統時鐘頻率為:

3.確定cpu時鐘頻率

系統時鐘必須要經過分頻才能提供給cpu使用,cpu的時鐘頻率最大值為72mhz,lpc2300系列arm可以通過設定cclksel來降低cpu的操作頻率。

上圖中可以看到.s檔案中cclksel欄位設定為6,則說明cpu時鐘為系統時鐘的6分頻。

4.確定外設時鐘頻率

例如lpc2300.s中配置如下:

從圖中可看出can1和can2的時鐘為cpu時鐘的2分頻,則可確定can的時鐘頻率為:

5.計算波特率

can匯流排時序暫存器(canxbtr)位描述 位

符號值功能復位值

rm置位

9:0brp

波特率預分頻。分頻apb時鐘來產生can時鐘,分頻值為(該字段的值+1)0x

13:10

保留15:14

sjw同步跳轉寬度是(該字段的值+1)個can時鐘0x

19:16

tesg1

從指定同步點到取樣的延時是(該字段的值+1)個can時鐘

1100

x22:20

tesg2

從取樣點到下個指定同步點的延時是(該字段的值+1)個can時鐘。規定的can位時間是(該字段的值+tesg1的值+3)個can時鐘

001x

23sam取樣0

x0匯流排被取樣1次

1匯流排被取樣3次

31:24-保留

例如can1btr暫存器的值為0x1c0002,則根據上表可明確:tesg1=12;tesg2=1;brp=2

根據上式可計算出:

/*  fpclk=24mhz 時 can標準波特率值

#define bps_1000k    0x140002

#define bps_800k    0x160002

#define bps_500k    0x1c0002

#define bps_250k    0x1c0005

#define bps_125k    0x1c000b

#define bps_100k    0x1c000e

#define bps_50k    0x1c001d

#define bps_20k    0x1c004a

#define bps_10k    0x1c0095

LPC24xx系列CAN波特率計算

lpc24xx系列can波特率計算 can 匯流排時序暫存器 canbtr sam 0 125k 及以上波特率 1 100k 及以下波特率 can標稱位時間定義比較靈活,這裡給出乙個簡單的原則 定義 can時鐘 tscl brp 1 fvpb 則 tseg1 tseg1 1 tscl tseg2 t...

串列埠波特率的理解

bit就是位,也叫位元位,是計算機中最小的單位 byte是位元組,也就是b 1位元組 byte 8位 bit 既 位只有兩種形式0和1,只能表示2種狀態,而位元組是有8個位組成的。可以表示256個狀態。1byte 8 bit,1kb 1024 byte,1mb 1024 kb,1g 1024 mb,...

CAN CAN的位元率和波特率

最近打算買個邏輯分析儀 示波器是買不起的 因為想採集can訊號,所示關注了一下邏輯分析儀的取樣頻率能不能採集500kbps的can訊號,藉此機會又重新回顧了一下位元率和波特率的問題。一般在用到can的時候,都會說can的波特率是多少多少,而實際在配置微控制器,需要計算分頻的時候卻發現,計算的其實是b...