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

歷史上的今天

今天是:2024年09月02日(星期一)

正在發生

2018年09月02日 | STM32之CAN---TTCAN模式淺析

發布者:liliukan 來源: eefocus關鍵字:STM32  CAN  TTCAN模式 手機看文章 掃描二維碼
隨時隨地手機看文章

1 前言

            傳統CAN 采用事件觸發消息傳輸機制,CSMA/ CD+ AMP( Carrier-Sense Mult iple Access w ith Co llision Detect ion and Arbit ration on Message Priorit ies, 載波偵聽、多路訪問、沖突檢測、優先級仲裁) 介質訪問控制機制, 即多個消息同時發送時, 按照消息標識符的優先級順序, 低優先級消息自動退出, 高優先級消息繼續發送。這種介質訪問方式提高了網絡的利用率和高優先級消息的實時性, 但在重負載CAN 中, 低優先級消息經常由于總線沖突而被迫退出發送, 導致低優先級消息傳輸時延長, 且傳輸時延不可預測, 因此, CAN 不適合實時性和可靠性要求特別高或有安全性要求的場合, 如汽車電子鐘的X-by-w ir e( 線控技術) 。為此國外有專家自2000 年起研究時間觸發機制的CAN --TT CAN。2004 年國際標準化組織將TT CAN 制定為ISO 11898-4國際標準。

2 什么是TTCAN?

            TT CA N 是CAN 的高層協議, 其數據鏈路層需要幀起始時刻信息。T TCAN 在CAN 的物理層數據鏈路層基礎上, 通過調度表實現網路上節點的分時同步通信。網路上各節點取得同步后, 消息只能根據調度表在規定的時間隙傳輸, 避免了消息傳輸的沖突、仲裁,消息傳輸時延短, 且可預知。具體介紹請參考ISO11898-4。

3 STM32中的TTCAN實現

3.1 開啟TTCAN模式

STM32是通過主控制寄存器(CAN_MCR)的TTCM位來控制TTCAN模式的使能開關的。CAN_MCR寄存器如下所示:

地址偏移量: 0x00
復位值: 0x0001 0002

                                                                                                圖1


位31:16保留,硬件強制為0。
位15RESET: bxCAN 軟件復位
0: 本外設正常工作;
1: 對bxCAN進行強行復位,復位后bxCAN進入睡眠模式(FMP位和CAN_MCR寄存器被初始化為其復位值)。此后硬件自動對該位清0。
位14:8保留,硬件強制為0。
位7TTCM: 時間觸發通信模式
0: 禁止時間觸發通信模式;
1: 允許時間觸發通信模式。
位6ABOM: 自動離線(Bus-Off)管理
該位決定CAN硬件在什么條件下可以退出離線狀態。
0: 離線狀態的退出是在,軟件對CAN_MCR寄存器的INRQ位進行置1隨后清0后,一旦硬件檢測到128次11位連續的隱性位,就退出離線狀態;
1: 一旦硬件檢測到128次11位連續的隱性位,自動退出離線狀態。
位5AWUM: 自動喚醒模式
該位決定CAN處在睡眠模式時由硬件還是軟件喚醒
0: 睡眠模式通過清除CAN_MCR寄存器的SLEEP位,由軟件喚醒;
1: 睡眠模式通過檢測CAN報文,由硬件自動喚醒。喚醒的同時,硬件自動對CAN_MSR寄存器的SLEEP和SLAK位清0 。
位4NART: 禁止報文自動重傳
0: 按照CAN標準,CAN硬件在發送報文失敗時會一直自動重傳直到發送成功;
1: CAN報文只被發送1次,不管發送的結果如何(成功、出錯或仲裁丟失)。
位3RFLM: 接收FIFO鎖定模式
0: 在接收溢出時FIFO未被鎖定,當接收FIFO的報文未被讀出,下一個收到的報文會覆蓋原有的報文;
1: 在接收溢出時FIFO被鎖定,當接收FIFO的報文未被讀出,下一個收到的報文會被丟棄。
位2TXFP: 發送FIFO優先級
當有多個報文同時在等待發送時,該位決定這些報文的發送順序
0: 優先級由報文的標識符來決定;
1: 優先級由發送請求的順序來決定。
位1SLEEP: 睡眠模式請求
軟件對該位置1可以請求CAN進入睡眠模式,一旦當前的CAN活動(發送或接收報文)結束,CAN就進入睡眠。
軟件對該位清0使CAN退出睡眠模式。
當設置了AWUM位且在CAN Rx信號中檢測出SOF位時,硬件對該位清0。
在復位后該位被置1-CAN在復位后處于睡眠模式。
位0INRQ: 初始化請求
軟件對該位清0可使CAN從初始化模式進入正常工作模式:當CAN在接收引腳檢測到連續的11個隱性位后,CAN就達到同步,并為接收和發送數據作好準備了。為此,硬件相應地對CAN_MSR寄存器的INAK位清0。
軟件對該位置1可使CAN從正常工作模式進入初始化模式:一旦當前的CAN活動(發送或接收)結束,CAN就進入初始化模式。相應地,硬件對CAN_MSR寄存器的INAK位置1。


如上,只需要將CAN_MCR寄存器的TTCM位置1則開啟了TTCAN模式。此時STM32的CAN模式以TTCAN模式進行通信。

STM32F20x的固件庫對應開啟TTCAN模式的接口為:

/** 

  * @brief  Enables or disables the CAN Time TriggerOperation communication mode. 

  * @note   DLC must be programmed as 8 in order Time Stamp (2 bytes) to be  

  *         sent over the CAN bus.   

  * @param  CANx: where x can be 1 or 2 to to select the CAN peripheral. 

  * @param  NewState: Mode new state. This parameter can be: ENABLE or DISABLE. 

  *         When enabled, Time stamp (TIME[15:0]) value is  sent in the last two 

  *         data bytes of the 8-byte message: TIME[7:0] in data byte 6 and TIME[15:8]  

  *         in data byte 7.  

  * @retval None 

  */  

void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState);  

或者在初始化CAN_Init時,將CAN_InitTypeDef的成員CAN_TTCM使能。

3.2 開啟時間戳

在TTCAN模式下,CAN硬件的內部定時器被激活,并且被用于產生發送與接收郵箱的)時間戳,分別存儲在CAN_RDTxR/CAN_TDTxR寄存器中。內部定時器在每個CAN位時間累加。內部定時器在接收和發送的幀起始位的采樣點位置被采樣,并生成時間戳。如下:

發送郵箱時間戳:

                                                                                                                       圖2

如上圖:在TTCAN模式下,TIME[15:0]將保留SOF的時間戳。

若通過將TGT位置1則開啟了時間戳,此時TIME[15:0]將保存了在發送該報文SOF的時刻,16位定時器的值。同時,在發送長度為8的報文中,時間戳TIME[15:0]是最后2個發送的字節:TIME[7:0]作為第7個字節,TIME[15:8]為第8個字節,它們替換了寫入CAN_TDHxR[31:16]的數據(DATA6[7:0]和DATA7[7:0])。為了把時間戳的2個字節發送出去,DLC必須編程為8。

在源碼中開啟此功能,修改CAN_TypeDef的sTxMailBox[3]的RDTR寄存器。

接收郵箱時間戳:

                                                                                 圖3

在TTCAN模式下,接收郵箱數據長度和時間戳寄存器的TIME[15:0]記錄接收到的報文的SOF時間戳。

參考文章:http://blog.csdn.net/flydream0/article/details/8167118


關鍵字:STM32  CAN  TTCAN模式 引用地址:STM32之CAN---TTCAN模式淺析

上一篇:stm32_can錯誤中斷 清除重點
下一篇:STM32學習總結——SMT32基本知識

推薦閱讀

中國儲能網訊:依托“互聯網+電力交易”系統,昆明電力交易中心成立兩年來,實現電力業務網上“一站式”辦理,累計交易電量1479億千瓦時,省內售電量市場化率增至61.3%,推動電力市場化改革進程,降低企業成本、激發實體經濟活力。 昆明電力交易中心總經理楊強介紹,目前交易中心已注冊市場主體數目6495家,比成立初期增加1997家。兩年間,雙邊協商交易...
據外媒報道,全固態電池是一種所有部件都是固體的電池,由于其能夠存儲更多能量,而且具備操作更安全的潛力,已成為替代鋰離子電池的下一代電池,受到了人們的關注。如果固態電池能夠實現量產,將能夠給電動汽車(EV)行業帶來革命性的變化,因為其可有效增加電動汽車的續航里程,以及可以顯著降低電動汽車體積和重量。但是,固態電池在實際電流下循環(反...
對于希望學習 ARM 匯編的同學而言, 購買 ARM 開發板進行板上實測無疑是一個有效的方法,不過購買 ARM 開發板需要一筆費用,而且每次測試都需要連接開發板,比較麻煩。這里介紹一個 ARM 模擬器——SkyEye,通過 SkyEye 我們可以直接在一臺 PC 上完成 ARM 匯編程序的開發和調試了,擺脫了 ARM 開發板的限制,真是不錯!下面介紹如何使用:1、...
異常向量表的概述在上一章,我們學習了建立異常向量表,這里我們可以通過看arm的手冊,我們每一種異常都對應一個工作模式,下面我就來嘗試觸發一下未定義指令異常和SVC異常異常發生的說明簡單的來說就是先保存現場,之后恢復現場保存現場:我們使用的是arm指令集,所以我們先將pc保存在lr中,并將pc-4(原本寫pc默認的是pc+4),再將cpsr寄存器保存在spsr...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 庆阳市| 甘孜| 汽车| 成安县| 磐安县| 平顶山市| 定远县| 汶上县| 苏尼特右旗| 天峨县| 泗阳县| 上饶市| 南安市| 黎川县| 绍兴县| 黎城县| 乌拉特中旗| 扎赉特旗| 霍山县| 蒙城县| 缙云县| 且末县| 陇西县| 长垣县| 天台县| 台湾省| 炉霍县| 灵川县| 沾化县| 通榆县| 吉林市| 隆尧县| 岑巩县| 遂昌县| 都江堰市| 巴楚县| 永顺县| 额济纳旗| 松滋市| 洪洞县| 新巴尔虎右旗|