HOME 首頁
SERVICE 服務產品
XINMEITI 新媒體代運營
CASE 服務案例
NEWS 熱點資訊
ABOUT 關于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    can與串口的區(qū)別(can與串口的區(qū)別是什么)

    發(fā)布時間:2023-05-22 04:41:40     稿源: 創(chuàng)意嶺    閱讀: 141        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于can與串口的區(qū)別的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    只需要輸入關鍵詞,就能返回你想要的內容,有小程序、在線網頁版、PC客戶端和批量生成器rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    問友Ai官網:https://ai.de1919.com。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    本文目錄:rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    can與串口的區(qū)別(can與串口的區(qū)別是什么)rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    can總線, i2c, isp,串口通信,這些通信相比較都有什么優(yōu)缺點?rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    最大區(qū)別:CAN-bus、串行通訊用于設備之間的通訊,IIC、SPI用于元件之間的通訊。

    請問CAN是串口嗎?rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    CAN是一種工業(yè)現(xiàn)場總線的名稱。一般普通計算機上沒有這個接口。它是串行通信方式,但不是一般說的串口。接口外觀可以是15針D型口,也可以RJ45接口,看用在什么場合了。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司


    rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    CAN的特點:rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    1、網絡各節(jié)點之間的數(shù)據(jù)通信實時性強:rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    CAN控制器工作于多種方式,網絡中的各節(jié)點都可根據(jù)總線訪問優(yōu)先權采用無損結構的逐位仲裁的方式競爭向總線發(fā)送數(shù)據(jù)。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    且CAN協(xié)議廢除了站地址編碼,而代之以對通信數(shù)據(jù)進行編碼,這可使不同的節(jié)點同時接收到相同的數(shù)據(jù),這些特點使得CAN總線構成的網絡各節(jié)點之間的數(shù)據(jù)通信實時性強,并且容易構成冗余結構,提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    2、開發(fā)周期短:rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    CAN節(jié)點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其他節(jié)點的操作不受影響,從而保證不會出現(xiàn)像在網絡中,因個別節(jié)點出現(xiàn)問題,使得總線處于“死鎖”狀態(tài)。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    而且,CAN具有的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來實現(xiàn),從而大大降低系統(tǒng)開發(fā)難度,縮短了開發(fā)周期,這些是僅有電氣協(xié)議的RS-485所無法比擬的。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    3、已形成國際標準的現(xiàn)場總線:rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    與其它現(xiàn)場總線比較而言,CAN總線是具有通信速率高、容易實現(xiàn)、且性價比高等諸多特點的一種已形成國際標準的現(xiàn)場總線。這些也是CAN總線應用于眾多領域,具有強勁的市場競爭力的重要原因。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    擴展資料:

    與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性。它在汽車領域上的應用是最廣泛的,世界上一些著名的汽車制造廠商都采用了CAN總線來實現(xiàn)汽車內部控制系統(tǒng)與各檢測和執(zhí)行機構間的數(shù)據(jù)通信。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    同時,由于CAN總線本身的特點,其應用范圍已不再局限于汽車行業(yè),而向自動控制、航空航天、航海、過程工業(yè)、機械工業(yè)、紡織機械、農用機械、機器人、數(shù)控機床、醫(yī)療器械及傳感器等領域發(fā)展。CAN已經形成國際標準,并已被公認為幾種最有前途的現(xiàn)場總線之一。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    參考資料:百度百科-CAN總線rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    stm32can通信和串口的區(qū)別rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    一、簡介
    STM32F103ZET6有3個USART(通用同步和異步收發(fā)器) + 2個UART(通用異步收發(fā)器)
    分別是USART1,USART2,USART3
    和UART4,UART5
    二、USART和UART有什么區(qū)別呢?
    當進行異步通信時,這兩者是沒有區(qū)別的。區(qū)別在于USART比UART多了同步通信功能,同步通信需要STM32提供時鐘來同步的,
    這個同步通信功能可以把USART當做SPI來用,比如用USART來驅動SPI設備。同步通信的連接示例圖:
    其中RX,TX,SCLK引腳的定義,在數(shù)據(jù)手冊上都可以找到:百為stm32開發(fā)板光盤芯片數(shù)據(jù)手冊數(shù)據(jù)手冊STM32F103xC STM32F103xD STM32F103xE.pdf
    這個區(qū)別在初學STM32的時候我們不需要去深入研究,只要知道USART有很多功能,除了全雙工異步通信之外,還包括支持同步通信和單線半雙工通信,支持LIN(局部互連網),智能卡協(xié)議和IrDA紅外通信,以及調制解調器(CTS/RTS)等操作。
    三、數(shù)據(jù)通信格式
    我們用得最多的是全雙工異步通信功能,下面我們來研究下怎么通過串口1(USART1)來收發(fā)信息,和printf功能的實現(xiàn)。
    通常串口通信的數(shù)據(jù)格式如下圖:
    我們需要設置的數(shù)據(jù)有通信速率,數(shù)據(jù)字長,奇偶檢驗位,停止位。一個典型的設置是115200波特率,8位數(shù)據(jù),無奇偶校驗,1位停止位。
    這個設置在固件函數(shù)庫里面,我們是通過設置USART_InitStructure結構體,然后調用USART_Init函數(shù)來實現(xiàn)的:
    USART_InitStructure.USART_BaudRate = 115200; //設置通信波特率為115200
    USART_InitStructure.USART_WordLength = USART_WordLength_8b; //設置通信數(shù)據(jù)格式為8位數(shù)據(jù)
    USART_InitStructure.USART_StopBits = USART_StopBits_1; //設置停止位為1位
    USART_InitStructure.USART_Parity = USART_Parity_No ; //設置為無奇偶校驗
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //設置為無硬件流控制,即無CTS/RTS控制
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //設置發(fā)送使能,接收使能
    USART_Init(USART1, &USART_InitStructure); //調用USART_Init,把上面的參數(shù)分別設置進USART的控制寄存器USART1->CR1,USART1->CR2,USART1->CR3
    USART_Cmd(USART1, ENABLE); //使能串口
    大家發(fā)現(xiàn),在2.0固件庫的USART例程里并沒有看到USART1,因為是它用USARTx宏代替的,
    其中USARTx是platform_config.h里定義的,大概是這個樣子:
    #ifdef USE_USART1
    #define USARTx USART1
    #define GPIOx GPIOA
    #define RCC_APB2Periph_GPIOx RCC_APB2Periph_GPIOA
    #define GPIO_RxPin GPIO_Pin_10
    #define GPIO_TxPin GPIO_Pin_9
    #endif
    只有定義了USE_USART1,上面的#ifdef USE_USART1和#endif之間的內容才會被編譯,所以在platform_config.h里也需要定義USE_USART1:
    #define USE_USART1
    這里GPIO_Pin_9是串口1的發(fā)送引腳,GPIO_Pin_10是串口1的接收引腳,也可以從百為STM32開發(fā)板的電路圖上看出來:
    四、串口引腳配置
    上面USART_Init函數(shù)配置了USART1的數(shù)據(jù)通信格式,但串口能工作的前提是需要配置相應的TX,RX的引腳,這個是通過GPIO_Configuration函數(shù)來配置的:
    void GPIO_Configuration(void)
    {
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //打開USART1時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //打開AFIO時鐘
    /* 配置 USARTx_Tx 為復用推挽輸出 */
    GPIO_InitStructure.GPIO_Pin = GPIO_TxPin;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOx, &GPIO_InitStructure);
    /* 配置 USARTx_Rx 為輸入懸空 */
    GPIO_InitStructure.GPIO_Pin = GPIO_RxPin;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOx, &GPIO_InitStructure);
    }
    五、收發(fā)數(shù)據(jù)
    配置好USART1使用的引腳,數(shù)據(jù)通信格式,下面就可以收發(fā)數(shù)據(jù)了,
    USART_GetFlagStatus函數(shù)可以讀取收發(fā)狀態(tài)等,讀取狀態(tài)標志可以是以下幾個:
    發(fā)送數(shù)據(jù)示例:
    USART_SendData(USART1, 'a'); //發(fā)送一個字符a
    接收數(shù)據(jù)示例:
    u16 RxData;
    RxData = USART_ReceiveData(USART1); //從USART1接收數(shù)據(jù)到RxData變量
    下面是串口通信printf程序里的主要功能,上電打印一串信息,把接收到的數(shù)據(jù)回顯到PC上:
    /* 用printf打印一串信息到PC的超級終端或串口調試軟件上 */
    printf("nrUSART Printf Example: retarget the C library printf function to the USARTnr");
    while (1)
    {
    if(USART_GetFlagStatus(USARTx,USART_FLAG_RXNE)==SET) //判斷是否有數(shù)據(jù)要接收
    {
    i = USART_ReceiveData(USARTx); //接收數(shù)據(jù)
    printf("%cnr",i&0xff); //回顯到PC的超級終端或串口調試軟件上
    }
    }
    六、printf的實現(xiàn)
    上面的printf是怎么實現(xiàn)的呢,這個是C標準庫里定義的函數(shù),我們是怎樣把它的輸出重定向到串口的呢?
    我們知道printf是調用fputc函數(shù)來打印的,所以我們只要把fputc函數(shù)重定義就可以了:
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    PUTCHAR_PROTOTYPE
    {
    /* 調用USARTx發(fā)送一個字符*/
    USART_SendData(USARTx, (u8) ch);
    /* 等待發(fā)送完成 */
    while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET)
    {
    }
    return ch;
    }
    另外還要加上頭文件
    #include "stdio.h"
    還要注意的是,在工程里要勾上USE MicroLIB

    can與串口的區(qū)別(can與串口的區(qū)別是什么)rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    can總線為什么比串口快?就是說各種總線速度不一樣,是由什么決定的,最關鍵的地方?rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司

    CAN總線在汽車上目前使用的比較多的有500K和250K的高速CAN、125K和62.5K的低速CAN,最高可做到1M,但這個1M是理論上的,實際上很難實現(xiàn),在工業(yè)上用的速率不太清楚。
    一樓的回答個人覺得不妥。
    首先,在大多數(shù)情況下(總不能拿25K的CAN跟56K的串口進行比較吧),CAN總線筆串口要快。CAN總線的出于安全性方面的額外開銷約占總數(shù)據(jù)的50%左右,即每發(fā)8個數(shù)據(jù)字節(jié),可能會同時產生8~9字節(jié)的額外開銷。
    串口的最高速率為56k,額外開銷占30%多,及沒傳1個數(shù)據(jù)字節(jié)至少需要4個位的額外開銷。
    所以,單純論點對點的通訊速率,串口是遠不及CAN的。
    各種總線的產生的歷史背景不一樣及所解決的需求不同導致了總線速度的不盡相同,因此總線的速率是由設計需求所決定的,最關鍵的地方從大的方面來說也是設計需求,從小的方面來說由不同總線的數(shù)據(jù)鏈路層決定的。

    以上就是關于can與串口的區(qū)別相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。rgT創(chuàng)意嶺 - 安心托付、值得信賴的品牌設計、營銷策劃公司


    推薦閱讀:

    cad家具設計入門教程(cad家具設計入門教程圖片)

    天正與cad有什么區(qū)別(天正cad和cad有什么區(qū)別)

    計算機的CAM是什么(計算機的cam是什么意思)

    vi設計軟件著作權(vi設計版權問題)

    熱文生成器(熱文生成器是什么)