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...