国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

AI嵌入式K210項(xiàng)目(5)-串口通訊

這篇具有很好參考價(jià)值的文章主要介紹了AI嵌入式K210項(xiàng)目(5)-串口通訊。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


前言

串口通訊是平時(shí)大家進(jìn)行調(diào)試最常用的方法,嵌入式應(yīng)用通常要求一個(gè)簡(jiǎn)單的并且占用系統(tǒng)資源少的方法來(lái)傳輸數(shù)據(jù)。通用異步收發(fā)傳輸器 (UART)即可以滿足這些要求,它能夠靈活地與外部設(shè)備進(jìn)行全雙工數(shù)據(jù)交換,那么本章我們來(lái)了解下,本節(jié)課主要學(xué)習(xí)K210的串口通訊。


一、什么是UART?

串口通訊是指外設(shè)和計(jì)算機(jī)間,通過(guò)數(shù)據(jù)信號(hào)線、地線等,按位(bit)進(jìn)行傳輸數(shù)據(jù)(發(fā)送和接收)的一種通訊方式,一個(gè)字符一個(gè)字符地傳輸,每個(gè)字符一位一位地傳輸,并且傳輸一個(gè)字符時(shí),總是以“起始位”開(kāi)始,以“停止位”結(jié)束,字符之間沒(méi)有固定的時(shí)間間隔要求,但是數(shù)據(jù)是低位在前,高位在后,然后接上奇偶檢驗(yàn)位。

AI嵌入式K210項(xiàng)目(5)-串口通訊,K210開(kāi)發(fā)板,AI嵌入式,K210,AI,嵌入式,嵌入式硬件
串口支持全雙工通訊,也就是使用一根線發(fā)送數(shù)據(jù)的同時(shí),用另一根線接收數(shù)據(jù)。串口通訊最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn),對(duì)于兩個(gè)通訊的端口,這些參數(shù)是必須設(shè)置為相同的。
也可以參考我的這篇文章STM32開(kāi)發(fā)(7)----CubeMX配置串口通訊(輪詢(xún)方式)

二、K210的UART

Tpye-C接口連接到串口芯片,具有供電和串口傳輸數(shù)據(jù)的功能,下載程序也是通過(guò)串口傳輸數(shù)據(jù)的功能把固件傳輸?shù)終210芯片上的。

Type-C接口是目前主流的數(shù)據(jù)傳輸連接接口,市面上很多智能手機(jī)也是使用Type-C接口給手機(jī)充電和傳輸數(shù)據(jù)。Type-C接口是可以正反插的,不用擔(dān)心反向拿反而插不進(jìn)的問(wèn)題。

通用UART 為UART1、UART2 和UART3,支持異步通信(RS232 和RS485 和IRDA,通信速率可達(dá)到5Mbps。UART 支持CTS 和RTS 信號(hào)的硬件管理以及軟件流控(XON 和XOFF)。3 個(gè)接口均可被DMA 訪問(wèn)或者CPU 直接訪問(wèn)。每次傳輸數(shù)據(jù)為8字節(jié),支持異步時(shí)鐘,可單獨(dú)配置數(shù)據(jù)時(shí)鐘,實(shí)現(xiàn)全雙工模式,保證兩個(gè)時(shí)鐘域中數(shù)據(jù)同步。

uart默認(rèn)為RS232模式,也可以配置為軟件可編程式RS485模式。
K210 Tpye-C接口連接K210的IO4和IO5接口,其中IO4為K210芯片的接收引腳,IO5為K210芯片的發(fā)送引腳。
AI嵌入式K210項(xiàng)目(5)-串口通訊,K210開(kāi)發(fā)板,AI嵌入式,K210,AI,嵌入式,嵌入式硬件
對(duì)應(yīng)的頭文件 uart.h
為用戶(hù)提供以下接口
? uart_init
? uart_config (0.6.0 后不再支持,請(qǐng)使用 uart_configure)
? uart_configure
? uart_send_data
? uart_send_data_dma
? uart_send_data_dma_irq
? uart_receive_data
? uart_receive_data_dma第 11 章 通用異步收發(fā)傳輸器 (UART) 125
? uart_receive_data_dma_irq
? uart_receive_data_dma_irq
? uart_irq_register
? uart_irq_deregister
? uart_set_work_mode
? uart_set_rede_polarity
? uart_set_rede_enable
? uart_set_tat
? uart_set_det
? uart_debug_init
? uart_handle_data_dma

三、實(shí)驗(yàn)過(guò)程

新建一個(gè)uart的文件夾,在里面新建main.c,以后也都是這樣,我們每一個(gè)實(shí)驗(yàn)放一個(gè)文件夾
AI嵌入式K210項(xiàng)目(5)-串口通訊,K210開(kāi)發(fā)板,AI嵌入式,K210,AI,嵌入式,嵌入式硬件

#include "fpioa.h"
#include "uart.h"
#include <string.h>
// 硬件IO口,與原理圖對(duì)應(yīng)
#define PIN_UART_USB_RX       (4)
#define PIN_UART_USB_TX       (5)

/*****************************SOFTWARE-GPIO********************************/
// 軟件GPIO口,與程序?qū)?yīng)
#define UART_USB_NUM           UART_DEVICE_3

/*****************************FUNC-GPIO************************************/
// GPIO口的功能,綁定到硬件IO口
#define FUNC_UART_USB_RX       (FUNC_UART1_RX + UART_USB_NUM * 2)
#define FUNC_UART_USB_TX       (FUNC_UART1_TX + UART_USB_NUM * 2)


/**
* Function       hardware_init
* @brief         硬件初始化,綁定GPIO口
* @param[in]     void
* @param[out]    void
* @retval        void
* @par History   無(wú)
*/
void hardware_init(void)
{
    // fpioa映射
    fpioa_set_function(PIN_UART_USB_RX, FUNC_UART_USB_RX);
    fpioa_set_function(PIN_UART_USB_TX, FUNC_UART_USB_TX);
}

/**
* Function       main
* @brief         主函數(shù),程序的入口
* @param[in]     void
* @param[out]    void
* @retval        0
* @par History   無(wú)
*/
int main(void)
{
    hardware_init();
    // 初始化串口3,設(shè)置波特率為115200
    uart_init(UART_USB_NUM);
    uart_configure(UART_USB_NUM, 115200, UART_BITWIDTH_8BIT, UART_STOP_1, UART_PARITY_NONE);

    /* 開(kāi)機(jī)發(fā)送hello yahboom! */
    char *hello = {"hello world!\n"};
    uart_send_data(UART_USB_NUM, hello, strlen(hello));

    char recv = 0;

    while (1)
    {
        /* 等待串口信息,并通過(guò)串口發(fā)送出去 */
        while(uart_receive_data(UART_USB_NUM, &recv, 1))
        {
            uart_send_data(UART_USB_NUM, &recv, 1);
        }
    }
    return 0;
}

代碼寫(xiě)好后,我們開(kāi)始編譯,注意:如果你編譯過(guò)程中出現(xiàn)錯(cuò)誤,可以先make clean掉之前生成的過(guò)程文件,重新生成

cd build
//注意這里的目標(biāo)文件目錄改成uart,和剛才新建的文件夾名稱(chēng)一致
cmake .. -DPROJ=uart  -G "MinGW Makefiles"
make

燒錄
AI嵌入式K210項(xiàng)目(5)-串口通訊,K210開(kāi)發(fā)板,AI嵌入式,K210,AI,嵌入式,嵌入式硬件
然后來(lái)看看結(jié)果吧
AI嵌入式K210項(xiàng)目(5)-串口通訊,K210開(kāi)發(fā)板,AI嵌入式,K210,AI,嵌入式,嵌入式硬件
那么還有其他方式進(jìn)行串口輸出調(diào)試嗎?我們習(xí)慣用printf進(jìn)行調(diào)試;這個(gè)系統(tǒng)初始化時(shí)候已經(jīng)幫我們做好了一起來(lái)看看user_entry.c文件
系統(tǒng)在初始化bsp是有已經(jīng)注冊(cè)系統(tǒng)輸出回調(diào)函數(shù),printf 時(shí)會(huì)調(diào)用該函數(shù)。系統(tǒng)默認(rèn)使用 UART3,如果需要修改 UART 則調(diào)用
uartdebuginit 函數(shù),具體請(qǐng)到 uart 章節(jié)查看該函數(shù);

void _init_bsp(int core_id, int number_of_cores)
{
    extern int main(int argc, char* argv[]);
    extern void __libc_init_array(void);
    extern void __libc_fini_array(void);

    if (core_id == 0)
    {
        /* Initialize bss data to 0 */
        init_bss();
        /* Init UART */
        fpioa_set_function(4, FUNC_UART3_RX);
        fpioa_set_function(5, FUNC_UART3_TX);
        uart_debug_init(UART_DEVICE_3);
        /* Init FPIOA */
        fpioa_init();
        /* Register finalization function */
        atexit(__libc_fini_array);
        /* Init libc array for C++ */
        __libc_init_array();
        /* Get reset status */
        sysctl_get_reset_status();
        /* Init plic */
        plic_init();
        /* Enable global interrupt */
        sysctl_enable_irq();
    }

因此我們直接使用printf之類(lèi)的函數(shù)也是可以的,寫(xiě)個(gè)簡(jiǎn)單的示例如下:
這里注意包含頭文件

#include <bsp.h>
#include <sysctl.h>

int main(void)
{
    int data;
    printf("Hello world\n");
    /* Clear stdin buffer before scanf */
    sys_stdin_flush();
    scanf("%d", &data);
    printf("\nData is %d\n", data);
    while(1)
        continue;
    return 0;
}

代碼編譯

cd build
//注意這里的目標(biāo)文件目錄改成uart,和剛才新建的文件夾名稱(chēng)一致
cmake .. -DPROJ=printf  -G "MinGW Makefiles"
make

燒錄
AI嵌入式K210項(xiàng)目(5)-串口通訊,K210開(kāi)發(fā)板,AI嵌入式,K210,AI,嵌入式,嵌入式硬件
這個(gè)方式是不是更簡(jiǎn)單?以后我們就直接用printf進(jìn)行打印了


總結(jié)

本章介紹了K210 串口通訊的相關(guān)知識(shí)
K210總共有三個(gè),分別是UART1,UART2和UART3;uart默認(rèn)使用RS232模式,可以另外配置成可編程式RS485模式;uart的引腳如果映射到其他硬件引腳上,需要連接其他串口芯片如CH340上才可以顯示數(shù)據(jù)。

注冊(cè)系統(tǒng)輸出回調(diào)函數(shù),printf 時(shí)會(huì)調(diào)用該函數(shù)。系統(tǒng)默認(rèn)使用 UART3,如果需要修改 UART 則調(diào)用
uartdebuginit 函數(shù),以后我們直接使用printf進(jìn)行調(diào)試即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-794198.html

到了這里,關(guān)于AI嵌入式K210項(xiàng)目(5)-串口通訊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器

    AI嵌入式K210項(xiàng)目(15)-安全散列算法加速器

    K210內(nèi)置了豐富的加速器,包括神經(jīng)網(wǎng)絡(luò)處理器 (KPU),AES(高級(jí)加密加速器),APU 麥克風(fēng)陣列語(yǔ)音數(shù)據(jù)加速計(jì)算處理器,現(xiàn)場(chǎng)可編程 IO 陣列 (FPIOA),數(shù)字?jǐn)z像頭接口 (DVP),相對(duì)于軟件可以極大的提高 AES 運(yùn)算速度,快速傅里葉變換加速器 (FFT),安全散列算法加速器 (SHA256)。 本文介

    2024年01月20日
    瀏覽(27)
  • 【嵌入式項(xiàng)目應(yīng)用】__物聯(lián)網(wǎng)小知識(shí):不同通訊線的通訊距離是多少,你知道嗎?

    【嵌入式項(xiàng)目應(yīng)用】__物聯(lián)網(wǎng)小知識(shí):不同通訊線的通訊距離是多少,你知道嗎?

    目錄 前言 不同協(xié)議通訊線的傳輸距離? 無(wú)線傳輸協(xié)議與距離 1. 藍(lán)牙 2. Zigbee 3. LoRa 4. Wi-Fi 5. 蜂窩網(wǎng)絡(luò) 6. Sigfox 7. LoRaWAN (* ̄︶ ̄)創(chuàng)作不易!期待你們的?點(diǎn)贊、收藏和評(píng)論喔。? 在物聯(lián)網(wǎng)中,通訊線的作用是 傳輸數(shù)據(jù) 、 信號(hào) 和 電能 ,以便在設(shè)備之間建立通信鏈路。 常見(jiàn)的

    2024年02月05日
    瀏覽(19)
  • 嵌入式學(xué)習(xí)筆記(21)S5PV210的時(shí)鐘域詳解

    嵌入式學(xué)習(xí)筆記(21)S5PV210的時(shí)鐘域詳解

    時(shí)鐘域:MSYS、DSYS、PSYS 因S5PV210的時(shí)鐘體系比較復(fù)雜,內(nèi)部外設(shè)模塊太多,因此把整個(gè)內(nèi)部的時(shí)鐘劃分為3大塊,叫做3個(gè)域。之所以分為3個(gè)域,是因?yàn)?10內(nèi)部的這些模塊彼此工作時(shí)鐘頻率差異太大了,所以又必要把高速的放一起,相對(duì)低速的放在一起。 (1)MSYS:CPU(Cortex-

    2024年02月09日
    瀏覽(25)
  • 嵌入式學(xué)習(xí)筆記(32)S5PV210的向量中斷控制器

    嵌入式學(xué)習(xí)筆記(32)S5PV210的向量中斷控制器

    6.6.1異常處理的2個(gè)階段 可以將異常處理分為2個(gè)階段來(lái)理解。第一個(gè)階段是異常向量表跳轉(zhuǎn);第二個(gè)階段是進(jìn)入了真正的異常處理程序irq_handler之后的部分。 6.6.2回顧:中斷處理的第一個(gè)階段(異常向量表跳轉(zhuǎn)階段)處理 (1)第一個(gè)階段之所以能夠進(jìn)行,主要依賴(lài)于CPU設(shè)計(jì)時(shí)

    2024年02月07日
    瀏覽(24)
  • 嵌入式 STM32 通訊協(xié)議--MODBUS

    嵌入式 STM32 通訊協(xié)議--MODBUS

    目錄 一、自定義通信協(xié)議 1、協(xié)議介紹 2、網(wǎng)絡(luò)協(xié)議 3、自定義的通信協(xié)議? 二、MODBUS通信協(xié)議 1、概述 2、MODBUS幀結(jié)構(gòu)? 協(xié)議描述 3、MODBUS數(shù)據(jù)模型 ? 4、MODBUS事務(wù)處理的定義 5、MODBUS功能碼? 6、功能碼定義? ?7、MODBUS數(shù)據(jù)鏈路層 8、MODBUS地址規(guī)則? 9、MODBUS幀描述 10、MODBUS兩種

    2024年02月11日
    瀏覽(40)
  • 【嵌入式基礎(chǔ)】串口通信操作實(shí)例

    【嵌入式基礎(chǔ)】串口通信操作實(shí)例

    本文主要介紹流水燈實(shí)驗(yàn)和串口通信的實(shí)驗(yàn)過(guò)程,對(duì)串口協(xié)議和RS-232標(biāo)準(zhǔn),RS232電平與TTL電平的區(qū)別,以及\\\"USB/TTL轉(zhuǎn)232\\\"模塊(以CH340芯片模塊為例)的工作原理這些知識(shí)也有了一定的涉及。 目錄 一、了解串口協(xié)議以及\\\"USB/TTL轉(zhuǎn)232\\\"模塊的工作原理 1、串口協(xié)議 2、RS-232標(biāo)準(zhǔn) 3、

    2024年02月01日
    瀏覽(25)
  • 嵌入式Linux應(yīng)用開(kāi)發(fā)筆記:串口

    嵌入式Linux應(yīng)用開(kāi)發(fā)筆記:串口

    串口(UART)是嵌入式設(shè)備中比較常用的功能。這篇文章將記錄下應(yīng)用程序中串口操作相關(guān)內(nèi)容。 這篇文章中內(nèi)容均在下面的開(kāi)發(fā)板上進(jìn)行測(cè)試: 《新唐NUC980使用記錄:自制開(kāi)發(fā)板(基于NUC980DK61YC)》 這篇文章是在下面文章基礎(chǔ)上進(jìn)行的: 《新唐NUC980使用記錄(5.10.y內(nèi)核)

    2024年02月09日
    瀏覽(24)
  • STM32串口通信詳解(嵌入式學(xué)習(xí))

    STM32串口通信詳解(嵌入式學(xué)習(xí))

    時(shí)鐘信號(hào)在電子領(lǐng)域中是指用于同步和定時(shí)電路操作的周期性信號(hào)。它在數(shù)字系統(tǒng)和通信系統(tǒng)中起著至關(guān)重要的作用,用于協(xié)調(diào)各個(gè)組件之間的數(shù)據(jù)傳輸和操作。 時(shí)鐘信號(hào)有以下幾個(gè)重要的方面: 頻率:時(shí)鐘信號(hào)的頻率是指單位時(shí)間內(nèi)信號(hào)周期的數(shù)量。它通常以赫茲(Hz)為

    2024年02月09日
    瀏覽(23)
  • python+嵌入式——串口通信篇(收發(fā)解包)

    python+嵌入式——串口通信篇(收發(fā)解包)

    這幾年,自己也做了一些嵌入式機(jī)器人。在整個(gè)開(kāi)發(fā)的過(guò)程中,調(diào)通信通常會(huì)花費(fèi)一段比較長(zhǎng)的時(shí)間,串口通信就是這樣的一個(gè)部分。 而現(xiàn)在在百度上進(jìn)行搜索,發(fā)現(xiàn)對(duì)python串口通信的博客講解,都有點(diǎn)太籠統(tǒng)了,這其中,應(yīng)該與python在處理硬件底層速度較慢導(dǎo)致用的人少有

    2024年02月07日
    瀏覽(24)
  • 【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十二屆省賽題,考點(diǎn):模擬電壓,串口通信,計(jì)時(shí)器

    【藍(lán)橋杯嵌入式】藍(lán)橋杯嵌入式第十二屆省賽題,考點(diǎn):模擬電壓,串口通信,計(jì)時(shí)器

    ???【藍(lán)橋杯嵌入式】專(zhuān)題正在持續(xù)更新中,原理圖解析?,各模塊分析?以及歷年真題講解?都在這兒哦,歡迎大家前往訂閱本專(zhuān)題,獲取更多詳細(xì)信息哦?? ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十屆省賽真題 ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十二屆省賽程序真題 ??【藍(lán)橋杯嵌入式

    2023年04月09日
    瀏覽(134)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包