娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32里的CAN 支持2.0A,2.0B, 帶有FIFO,中斷等, 這里主要提一下內(nèi)部的時(shí)鐘應(yīng)用.

bxCAN掛接在APB1總線上,采用總線時(shí)鐘,所以我們需要知道APB1的總線時(shí)鐘是多少. 我們先看看下圖,看看APB1總線時(shí)鐘:


APB1時(shí)鐘取自AHB的分頻, 而AHB又取自系統(tǒng)時(shí)鐘的分頻, 系統(tǒng)時(shí)鐘可選HSI,HSE, PLLCLK, 這個(gè)在例程的RC設(shè)置里都有的,


總線時(shí)鐘MHz   (3+TS1+TS2)*(BRP+1)

===================================================

下面是我的計(jì)算:

CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq; 

注意//#define CAN_BS1_3tq                 ((uint8_t)0x02) /*!< 3 time quantum */
CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
CAN_InitStructure.CAN_Prescaler = 4;//2
nominal bit time(3+5+1)tq=9tq
關(guān)于分頻系數(shù) 查看 system_stm32f10x.c下面的
static void SetSysClockTo72(void) 函數(shù)
/* HCLK = SYSCLK */
/* PCLK2 = HCLK */
/* PCLK1 = HCLK/2 */

所以can時(shí)鐘 72MHZ/2/4=9 Mhz
tq=1/36Mhz
波特率為 1/nominal bit time= 9/9=1MHZ 

=========================================

-----------------------------------------------

              ====================================================

void CAN_Configuration(void) 

CAN_InitTypeDef         CAN_InitStructure; 
CAN_FilterInitTypeDef   CAN_FilterInitStructure; 

/* CAN register init */ 
CAN_DeInit(); 
CAN_StructInit(&CAN_InitStructure); 

/* CAN cell init */ 
CAN_InitStructure.CAN_TTCM=DISABLE; 
CAN_InitStructure.CAN_ABOM=DISABLE; 
CAN_InitStructure.CAN_AWUM=DISABLE; 
CAN_InitStructure.CAN_NART=DISABLE; 
CAN_InitStructure.CAN_RFLM=DISABLE; 
CAN_InitStructure.CAN_TXFP=DISABLE; 
CAN_InitStructure.CAN_Mode=CAN_Mode_Normal; 
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; 
CAN_InitStructure.CAN_BS1=CAN_BS1_9tq; 
CAN_InitStructure.CAN_BS2=CAN_BS2_8tq; 
CAN_InitStructure.CAN_Prescaler=200; 
CAN_Init(&CAN_InitStructure); 

/* CAN filter init */ 
CAN_FilterInitStructure.CAN_FilterNumber=0; 
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; 
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_16bit; 
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; 
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000; 
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; 
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; 
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0; 
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; 
CAN_FilterInit(&CAN_FilterInitStructure); 

注意//#define CAN_BS1_3tq                 ((uint8_t)0x02) /*!< 3 time quantum */
撥特率10K,公式:72MHZ/2/200/(1+9+8)=0.01,即10K,和SJA1000測(cè)試通過   

================================================

120歐姆電阻要加上?。。?nbsp;

哦   確實(shí)是 

      CAN->BTR = (u32)((u32)CAN_InitStruct->CAN_Mode << 30) | ((u32)CAN_InitStruct->CAN_SJW << 24) | 
                ((u32)CAN_InitStruct->CAN_BS1 << 16) | ((u32)CAN_InitStruct->CAN_BS2 << 20) | 
                ((u32)CAN_InitStruct->CAN_Prescaler - 1); 

   總結(jié)一下 
   Fpclk=36M 時(shí) can波特率為250k   的配置為 
   
/* CAN cell init */ 
   CAN_InitStructure.CAN_TTCM=DISABLE; 
   CAN_InitStructure.CAN_ABOM=DISABLE; 
   CAN_InitStructure.CAN_AWUM=DISABLE; 
   CAN_InitStructure.CAN_NART=DISABLE; 
   CAN_InitStructure.CAN_RFLM=DISABLE; 
   CAN_InitStructure.CAN_TXFP=DISABLE; 
   CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; 
   CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; 
   CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; 
   CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; 
   CAN_InitStructure.CAN_Prescaler=9; 
   CAN_Init(&CAN_InitStructure); 250k 

======================================

的:將can總線波特率設(shè)置為250k 
      
 在官方的can例程上 給出了100k 查詢 和500k 中斷方式的例子 分別設(shè)置如下: 
   CAN_Polling: 
   /* CAN cell init */ 
   CAN_InitStructure.CAN_TTCM=DISABLE; 
   CAN_InitStructure.CAN_ABOM=DISABLE; 
   CAN_InitStructure.CAN_AWUM=DISABLE; 
   CAN_InitStructure.CAN_NART=DISABLE; 
   CAN_InitStructure.CAN_RFLM=DISABLE; 
   CAN_InitStructure.CAN_TXFP=DISABLE; 
   CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; 
   CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; 
   CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; 
   CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; 
   CAN_InitStructure.CAN_Prescaler=5; 
   CAN_Init(&CAN_InitStructure); 100k 

   /* CAN cell init */    CAN_Interrupt 
   CAN_InitStructure.CAN_TTCM=DISABLE; 
   CAN_InitStructure.CAN_ABOM=DISABLE; 
   CAN_InitStructure.CAN_AWUM=DISABLE; 
   CAN_InitStructure.CAN_NART=DISABLE; 
   CAN_InitStructure.CAN_RFLM=DISABLE; 
   CAN_InitStructure.CAN_TXFP=DISABLE; 
   CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; 
   CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; 
   CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; 
   CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; 
   CAN_InitStructure.CAN_Prescaler=1; 
   CAN_Init(&CAN_InitStructure); //500k 

can時(shí)鐘是RCC_APB1PeriphClock,你要注意CAN時(shí)鐘頻率 
CAN波特率 = RCC_APB1PeriphClock/CAN_SJW+CAN_BS1+CAN_BS2/CAN_Prescaler; 
如果CAN時(shí)鐘為8M, CAN_SJW = 1,CAN_BS1 = 8,CAN_BS2 = 7,CAN_Prescaler = 2 
那么波特率就是=8M/(1+8+7)/2=250K 

=========================================

得到500Kb/s的波特率

CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;

CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
CAN_InitStructure.CAN_Prescaler=1;

每一位的Tq數(shù)目 = 1 (固定SYNC_SEG) +   8 (BS1) + 7 (BS2) = 16

如果CAN時(shí)鐘是 8 MHz : (8M / 1 ) / 16 = 500K

其中:
1 為分頻系數(shù)
16 為每一位的Tq數(shù)目

為了設(shè)置為 100K, 把分頻系數(shù)改為5即可, BS1 BS2 不變

每一位的Tq數(shù)目 = 1 (固定) +   8 (BS1) + 7 (BS2) = 16
如果CAN時(shí)鐘是 8 MHz : (8M / 5 ) / 16 = 100K

如果想得到 1M 的波特率, CAN時(shí)鐘仍然是 8 MHz的情況下, 分頻系數(shù)不變

應(yīng)該改變 BS1 BS2

CAN_InitStructure.CAN_BS1=CAN_BS1_5tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;

每一位的Tq數(shù)目 = 1 (固定) +   5 (BS1) + 2 (BS2) = 8
如果CAN時(shí)鐘是 8 MHz : (8M / 1 ) / 8 = 1000K




另外盡可能的把采樣點(diǎn)設(shè)置為 CiA 推薦的值:

75%      when 波特率 > 800K
80%      when 波特率 > 500K
87.5%    when 波特率 <= 500K

所以對(duì)于 100K 的波特率(假定使用 8MHz 時(shí)鐘) 
可以修改該BS1 BS2 為:

CAN_InitStructure.CAN_Prescaler=5;
CAN_InitStructure.CAN_BS1=CAN_BS1_13tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;

(1+13) / (1+13+2) = 87.5%

所以對(duì)于 500K 的波特率(假定使用 8MHz 時(shí)鐘) 
可以修改該BS1 BS2 為:

CAN_InitStructure.CAN_Prescaler=1;
CAN_InitStructure.CAN_BS1=CAN_BS1_13tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;

(1+13) / (1+13+2) = 87.5%

所以對(duì)于 1000K 的波特率(假定使用 8MHz 時(shí)鐘) 
可以修改該BS1 BS2 為:

CAN_InitStructure.CAN_Prescaler=1;
CAN_InitStructure.CAN_BS1=CAN_BS1_5tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;

(1+5) / (1+5+2) = 75%

個(gè)人見解, 僅供參考。 

上邊這個(gè)公式算出來的就是CAN的速率了


關(guān)鍵字:STM32  CAN  波特率 引用地址:STM32 CAN 波特率的計(jì)算

上一篇:stm32HAL庫(kù)之can操作
下一篇:STM32 CAN總線通信學(xué)習(xí)筆記(一)

推薦閱讀

? ? ? ? 國(guó)慶七天,宅在家里的我在朋友圈去完了浪漫的東京、巴黎、土耳其,還順便欣賞了邁阿密和洛杉磯。雖然窮是我不愿意去旅游的唯一理由,但我還是一個(gè)堅(jiān)定的假期出游“勸退黨”,除了人山人海的糟糕體驗(yàn),天價(jià)的十一機(jī)票(qiong)也是我望而退步的主要原因。? ? ? ? 對(duì)我來說,選擇特價(jià)機(jī)票出行,不僅可以避開假期,還能將省下來的價(jià)...
三星智能手機(jī)業(yè)務(wù)在中國(guó)市場(chǎng)的份額這幾年一直都是呈現(xiàn)下滑的趨勢(shì),從此前的15%已經(jīng)下跌到如今不足1%。面對(duì)市場(chǎng)的頹勢(shì),三星已經(jīng)覺得無力回天,現(xiàn)關(guān)閉了最后一家手機(jī)制造廠。 三星宣布停止在中國(guó)生產(chǎn)手機(jī),原因是來自中國(guó)國(guó)內(nèi)的競(jìng)爭(zhēng)對(duì)手的壓力太激烈。日前,三星在中國(guó)最后一家位于惠州的工廠也已經(jīng)停工,相關(guān)員工陸續(xù)辦理了離職手續(xù),離開惠州工廠。 據(jù)了...
隨著人工智能和數(shù)字化的發(fā)展,數(shù)百萬工作可以由機(jī)器人來完成。機(jī)器到底會(huì)奪去多少工作崗位,杜塞爾多夫DICE研究所:機(jī)器人不會(huì)奪走人類的工作崗位! 1994年以來,德國(guó)引進(jìn)了13100個(gè)工業(yè)機(jī)器人,人類的工作崗位并沒有因此丟失。雖然每個(gè)工業(yè)機(jī)器人相當(dāng)于兩個(gè)勞動(dòng)力,但是也開辟了相關(guān)領(lǐng)域服務(wù)類新崗位。 歐洲經(jīng)濟(jì)科學(xué)研究(ZEW)的一項(xiàng)新研究顯示,人類...
STM8L系列芯片一般采用電池供電,當(dāng)電池使用一段時(shí)間后,電池電壓下降,如果使用電池電壓作為AD轉(zhuǎn)換參考電壓,會(huì)導(dǎo)致AD采樣失真。STM8L內(nèi)部有一個(gè)參考電壓,電壓為1.225V,使用內(nèi)部參考電壓做基準(zhǔn),可以解決這個(gè)問題。以stm8l052為例,AD初始化:采樣內(nèi)部參考電壓,以單片機(jī)供電電壓為基準(zhǔn)采樣NTC熱敏電阻電壓,以單片機(jī)供電電壓為基準(zhǔn),在AD采樣4通道。#d...

史海拾趣

問答坊 | AI 解惑

DXP2004 完整視頻教程

誰有DXP2004 完整視頻教程   我學(xué)的挺零散的  想系統(tǒng) 全面在學(xué)下…

查看全部問答∨

ZIGBEE問題

支持ZIGBEE協(xié)議通信的芯片有那些, 有帶協(xié)議棧嗎,協(xié)議棧是不是要針對(duì)不同os來說的。比如  tinyos   win ce   ucos-II 等 …

查看全部問答∨

詞組輸入 發(fā)帖者全部加分!

各位大俠,小弟想做一個(gè)拼音輸入法,對(duì)于單字輸入還好說,就是不能實(shí)現(xiàn)詞組輸入,郁悶的不行。 各位兄弟有沒有相關(guān)思路,不勝感激!那么多詞,如何做索引表??? 例如 我輸入zhongg    或    zhg   都能找到‘中國(guó) ...…

查看全部問答∨

好多電子書呀

網(wǎng)址:http://www.netyi.net/in.asp?id=pingfuzhang …

查看全部問答∨

1602

#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit en=P2^0;sbit rs=P2^1;sbit key1=P3^0;sbit key2=P3^1;sbit key3=P3^2;sbit ss=P3^5;uchar code table[]=" 2010-08-10 TUS";uchar code table1[]="  &nb ...…

查看全部問答∨

求MSP430G2231數(shù)據(jù)手冊(cè)和用戶指南

一般單片機(jī)都有這個(gè)的,我不太懂英文,不知道哪里下載。謝謝各位了?!?

查看全部問答∨

msp430

現(xiàn)在用的人越來越多了,所以打算學(xué)習(xí)一下…

查看全部問答∨

TI的高效AC適配器方案

本帖最后由 dontium 于 2015-1-23 12:44 編輯 用于USB接口的AC適配器,同時(shí)具有滿載的高效率和空載時(shí)的低耗能。 …

查看全部問答∨

求推薦一本學(xué)習(xí)c語言的書

如題,求大家推薦一本c語言的書。大學(xué)用譚老師的c語言程序設(shè)計(jì),畢業(yè)幾年了,現(xiàn)在想學(xué)習(xí)c語言編程dsp,指針,函數(shù),結(jié)構(gòu)體,聯(lián)合的知識(shí)很差,想找本書看看。謝謝…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 丰宁| 竹溪县| 潮安县| 吉木乃县| 武乡县| 犍为县| 游戏| 温泉县| 邵阳市| 华容县| 兴化市| 江孜县| 日照市| 青海省| 黄陵县| 阿鲁科尔沁旗| 通榆县| 安仁县| 南投市| 扬州市| 自贡市| 湖口县| 林州市| 什邡市| 镇雄县| 吕梁市| 麦盖提县| 军事| 嘉兴市| 治县。| 东兰县| 东源县| 张家口市| 文登市| 望奎县| 平阳县| 闻喜县| 河东区| 盐源县| 武穴市| 原平市|