最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

can總線波特率參數(shù)調(diào)整

2021-12-06 17:30 作者:GXTon_阿通  | 我要投稿

位時序就是說的can波特率.

第一步:

查看單片機(jī)中參數(shù)取值的范圍.

stm32單片機(jī)中包含一下要設(shè)置的參數(shù):

BRP:預(yù)分頻值.??????(范圍: 1-1024)

Ts1:包括TpsTpbs1.??(范圍: 1-16)

Ts2:包括Tpbs2.???????(范圍: 1-8)

Sjw:用于設(shè)置Tpbs1Tpbs2可以調(diào)節(jié)的節(jié)拍數(shù).??(范圍: 1-4)

第二步:

首先看一個例子.如果要把can配置成500K波特率.

首先計(jì)算Q,它代表了一個位可以分成幾個節(jié)拍,當(dāng)然是越大越好.這樣可以把節(jié)拍分的更細(xì)致一些.有個公式可以進(jìn)行計(jì)算:


BRP=Fclk/(Q*Baudrate)

已知: ?Fclk就是stm32的APB上時鐘 已知是42M=42 000 000

已知: 上面公式中Baudrate=500K=500 000

未知: ?BRP是分頻系數(shù),用于將APB的時鐘分頻到CAN時鐘.

未知: ?Q,一個位分成Q份.

?

通過這已知的兩個數(shù),可以推出很多Q和BRP的組合,BRP=84/Q

所以,

84*1 ??(Q是84,最大,但是Q超過了stm32的設(shè)定范圍)

42*2 ??(Q是84,最大,但是Q超過了stm32的設(shè)定范圍)

21*4 ??(可以用, 即Q為21 ?BRP為4)

14*6

?

但是要求Q盡可能的大,所以BRP取值為4.

Q取值得到最大,為21.

波特率是500k,則每個位耗時2000ns,因?yàn)镼是21,所以被分成了21份.

每份耗時2000/21耗時95.2ns.

?

Q的參數(shù)就是越大越好.(但是不能超過stm32的設(shè)定范圍)

Q就是一個bit,一個位所被分成的節(jié)拍數(shù).

Q是總的節(jié)拍數(shù),要分給各個段.

Q=Tss+Tps+Tpbs1+Tpbs2

Tss通常占一拍;

Tps和Tpbs1相加構(gòu)成stm32單片機(jī)中的Ts1;

Tpbs2是stm32單片機(jī)中的Ts2;

第三步:

進(jìn)行計(jì)算

Q是21,所以1位數(shù)據(jù)時長可以分成21份.

Q又由4個部分:

Q=Tss+Tps+Tps1+Tps2??(其中,在stm32中Tps和Tps1合并為一個參數(shù)了)

Tss:其值一般為1份;

Tps:是有設(shè)備性能和總線長度決定,通常情況下總線延遲可以按照5.5ns/m計(jì)算.

單個節(jié)點(diǎn)的收發(fā)延遲,可以按75ns計(jì)算.加入有線長1m,則Tps=2*(1*5.5+75)ns=161ns.

?

傳播段時長Tps:信號在總線上來回傳輸所消耗的時間.

設(shè)一次單向傳輸?shù)难訒r為Tdelay,包括:

1.發(fā)送節(jié)點(diǎn)從生產(chǎn)信號到把信號發(fā)送到總線上,Td1.

2.信號在總線上傳輸?shù)臅r間Tbus.

3.接收節(jié)點(diǎn)從總線獲取信號的時間Td2.

Tps>=2Tdelay=2*(Td1+Tbus+Td2)

?

?根據(jù)Q的值,可以知道每個節(jié)拍耗時,然后用Tps除以每個節(jié)拍的時間,就知道Tps包含幾個節(jié)拍了.(161/95.2約1.69個節(jié)拍,按2個計(jì))

?

Tps1:一個位被分成Q個,Tss已知,Tps已知,那么剩下的個數(shù)被Tps1和Tps2瓜分.如果是奇數(shù)個,則Tps1比Tps2少1個. (21-1-2)/2=9 ?所以Tps1=9;Tps2=9;

?

SJW:它的值要取(Ts2-1)和4兩個數(shù)小的那個.所以SJW=4.

第四步:

進(jìn)行數(shù)據(jù)的分析

BRP=4; ??????????預(yù)分頻值.???????????????????????(取值范圍:1-1024內(nèi))

Ts1=2+9=11; ??????包TpsTpbs1.??????????????????(取值范圍:1-16內(nèi))

Ts2=9; ???????????包Tpbs2.???????????????????????(取值范圍:1-8內(nèi))

Sjw=4; ???????????設(shè)Tpbs1Tpbs2可以調(diào)節(jié)的節(jié)拍數(shù).??(取值范圍:1-4內(nèi))

?

然后判斷一下,是否符合采樣點(diǎn)規(guī)則:

?



BS1=Tps+Tpbs1

BS2=Tpbs2

(11+1)/(1+11+9)=12/21=57% 不太符合推薦值.

?

進(jìn)行調(diào)整:

(16+1)/(1+16+4)=17/21=80.0%?還是不太符合.

?

繼續(xù)調(diào)整:

(18+1)/(1+18+2)=17/21=85.7% 勉強(qiáng)符合,但會超出stm32范圍Ts1>16了.所以選擇上面的取值.

?

所以,最終定值為:

BRP=4; ??????????預(yù)分頻值.????????(1-1024)

Ts1=16; ??????????包TpsTpbs1.??(1-16)

Ts2=4; ???????????包Tpbs2.????????(1-8)

Sjw=4; ???????????設(shè)Tpbs1Tpbs2可以調(diào)節(jié)的節(jié)拍數(shù).??(1-4)

?

程序中:

?

然后用500k的波特率,就可以接收:

?

?


最后放一個stm32手冊上的圖:


can總線波特率參數(shù)調(diào)整的評論 (共 條)

分享到微博請遵守國家法律
阜阳市| 灵石县| 尼玛县| 嘉荫县| 鄂托克旗| 同德县| 华池县| 资阳市| 光山县| 厦门市| 海门市| 伽师县| 石门县| 克什克腾旗| 花垣县| 通许县| 满城县| 金阳县| 彭泽县| 河间市| 湘乡市| 辽宁省| 凭祥市| 佛学| 茌平县| 通渭县| 玛多县| 黎川县| 霍城县| 齐齐哈尔市| 临泽县| 婺源县| 绍兴县| 盐边县| 正宁县| 东方市| 策勒县| 磴口县| 沭阳县| 黄梅县| 当阳市|