女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MIMXRT1060 FLEXIO UART波特率

li1756686189 ? 來(lái)源:嵌入式 MCU ? 2023-01-29 10:02 ? 次閱讀

ad650948-9797-11ed-bfe3-dac502259ad0.png-

OSR 最小值是 4,因此24Mhz時(shí)鐘模式下,LPUART最大波特率是 24/5 = 4.8Mbps,手冊(cè)中硬件的 LPUART最大的波特率是 80Mhz/4=20Mbps。80/13= 6.15Mbps波特率,這樣相對(duì)于 6Mhz就有 2.5%的誤差。

ad8e38cc-9797-11ed-bfe3-dac502259ad0.png

ada2576c-9797-11ed-bfe3-dac502259ad0.png

adbb17de-9797-11ed-bfe3-dac502259ad0.png

那如果用 FlexIO外設(shè)實(shí)現(xiàn) UART波特率可以達(dá)到 6Mbps么?

將FlexIO用于UART RX時(shí),RM參考手冊(cè)的注意事項(xiàng):“FlexIO數(shù)據(jù)只在每個(gè)位的中間采樣一次。可以使用另一個(gè)定時(shí)器對(duì)傳入數(shù)據(jù)進(jìn)行毛刺過(guò)濾”。保持FlexIO時(shí)鐘與RM參考手冊(cè)中的波特率的倍數(shù)相同。RM參考手冊(cè)中的UART接收和UART發(fā)射配置表將所使用的每個(gè)FlexIO定時(shí)器的TIMCMP設(shè)置為0xF01。這意味著波特率是FlexIO時(shí)鐘頻率的1/4。FlexIO不支持奇偶校驗(yàn)位的自動(dòng)驗(yàn)證。

使用了SDK中的Flexio_uart示例,并使用了flexio_uart驅(qū)動(dòng)程序,只對(duì)這些頻率/波特率進(jìn)行了一些細(xì)微的更改。示例使用480MHz的PLL3作為FlexIO的時(shí)鐘源。將FLEXIO2_CLK_PRED除法器設(shè)置為(4+1),將FLEXIO2_CLK_PODF除法器設(shè)為(3+1),從而提供 24MHz(480/5/4)的FlexIO時(shí)鐘。對(duì)于驅(qū)動(dòng)程序,將flexio_uart_config_t.baudRate_Bps設(shè)置為6000000。然后,驅(qū)動(dòng)程序計(jì)算兩個(gè)定時(shí)器的TIMCMP寄存器=0xF01。

ade78d46-9797-11ed-bfe3-dac502259ad0.png

它在IMXRT1060-EVKB板上運(yùn)行,SDK v2.12.1,如下代碼簡(jiǎn)單修改。SDK_2_12_1_MIMXRT1062xxxxBoardsevkbmimxrt1060driver_examplesflexiouartedma_transfer 此應(yīng)用程序僅在引腳GPIO_B0_05上傳輸,RX設(shè)置在引腳GPIO_B0_06上。

IOMUXC_SetPinMux(IOMUXC_GPIO_B0_05_FLEXIO2_FLEXIO05, 0U);

IOMUXC_SetPinMux(IOMUXC_GPIO_B0_06_FLEXIO2_FLEXIO06, 0U);

IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_05_FLEXIO2_FLEXIO05, 0x10B0U);

IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_06_FLEXIO2_FLEXIO06, 0x10B0U);

#include "pin_mux.h"

#include "clock_config.h"

#include "board.h"

#include "fsl_flexio_uart_edma.h"

#include "fsl_dmamux.h"

#define BOARD_FLEXIO_BASE FLEXIO2

#define FLEXIO_UART_TX_PIN 5U

#define FLEXIO_UART_RX_PIN 6U

/* Select USB1 PLL (480 MHz) as flexio clock source */

#define FLEXIO_CLOCK_SELECT (3U)

/* Clock pre divider for flexio clock source */

#define FLEXIO_CLOCK_PRE_DIVIDER (4U)

/* Clock divider for flexio clock source */

#define FLEXIO_CLOCK_DIVIDER (3U)

#define FLEXIO_CLOCK_FREQUENCY

(CLOCK_GetFreq(kCLOCK_Usb1PllClk) / (FLEXIO_CLOCK_PRE_DIVIDER + 1U) / (FLEXIO_CLOCK_DIVIDER + 1U))

#define FLEXIO_DMA_REQUEST_BASE kDmaRequestMuxFlexIO2Request0Request1

#define EXAMPLE_FLEXIO_UART_DMAMUX_BASEADDR DMAMUX

#define EXAMPLE_FLEXIO_UART_DMA_BASEADDR DMA0

#define FLEXIO_UART_TX_DMA_CHANNEL 0U

#define FLEXIO_UART_RX_DMA_CHANNEL 1U

#define FLEXIO_TX_SHIFTER_INDEX 0U

#define FLEXIO_RX_SHIFTER_INDEX 2U

#define EXAMPLE_TX_DMA_SOURCE kDmaRequestMuxFlexIO2Request0Request1

#define EXAMPLE_RX_DMA_SOURCE kDmaRequestMuxFlexIO2Request2Request3

#define ECHO_BUFFER_LENGTH 8

void FLEXIO_UART_UserCallback(FLEXIO_UART_Type *base,

flexio_uart_edma_handle_t *handle,

status_t status,

void *userData);

flexio_uart_edma_handle_t g_uartHandle;

FLEXIO_UART_Type uartDev;

edma_handle_t g_uartTxEdmaHandle;

edma_handle_t g_uartRxEdmaHandle;

AT_NONCACHEABLE_SECTION_INIT(uint8_t g_tipString[]) =

"Flexio uart edma example Board receives 8 characters then sends them out Now please input: ";

AT_NONCACHEABLE_SECTION_INIT(uint8_t g_txBuffer[ECHO_BUFFER_LENGTH]) = {0};

AT_NONCACHEABLE_SECTION_INIT(uint8_t g_rxBuffer[ECHO_BUFFER_LENGTH]) = {0};

volatile bool rxBufferEmpty = true;

volatile bool txBufferFull = false;

volatile bool txOnGoing = false;

volatile bool rxOnGoing = false;

/* UART 用戶回調(diào)函數(shù)*/

void FLEXIO_UART_UserCallback(FLEXIO_UART_Type *base,

flexio_uart_edma_handle_t *handle,

status_t status,

void *userData)

{

userData = userData;

if (kStatus_FLEXIO_UART_TxIdle == status)

{

txBufferFull = false;

txOnGoing = false;

}

if (kStatus_FLEXIO_UART_RxIdle == status)

{

rxBufferEmpty = false;

rxOnGoing = false;

}

}

int main(void)

{

flexio_uart_config_t userconfig;

flexio_uart_transfer_t xfer;

flexio_uart_transfer_t sendXfer;

status_t result = kStatus_Success;

edma_config_t config;

BOARD_ConfigMPU();

BOARD_InitPins();

BOARD_BootClockRUN();

/* Flexio 時(shí)鐘設(shè)置*/

CLOCK_SetMux(kCLOCK_Flexio2Mux, FLEXIO_CLOCK_SELECT);

CLOCK_SetDiv(kCLOCK_Flexio2PreDiv, FLEXIO_CLOCK_PRE_DIVIDER);

CLOCK_SetDiv(kCLOCK_Flexio2Div, FLEXIO_CLOCK_DIVIDER);

/*

* config.enableUart = true;

* config.enableInDoze = false;

* config.enableInDebug = true;

* config.enableFastAccess = false;

* config.bitCountPerChar = kFLEXIO_UART_8BitsPerChar;

*/

FLEXIO_UART_GetDefaultConfig(&userconfig);

userconfig.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;

userconfig.enableUart = true;

uartDev.flexioBase = BOARD_FLEXIO_BASE;

uartDev.TxPinIndex = FLEXIO_UART_TX_PIN;

uartDev.RxPinIndex = FLEXIO_UART_RX_PIN;

uartDev.shifterIndex[0] = FLEXIO_TX_SHIFTER_INDEX;

uartDev.shifterIndex[1] = FLEXIO_RX_SHIFTER_INDEX;

uartDev.timerIndex[0] = 0U;

uartDev.timerIndex[1] = 1U;

result = FLEXIO_UART_Init(&uartDev, &userconfig, FLEXIO_CLOCK_FREQUENCY);

if (result != kStatus_Success)

{

return -1;

}

/*初始化 DMA*/

DMAMUX_Init(EXAMPLE_FLEXIO_UART_DMAMUX_BASEADDR);

EDMA_GetDefaultConfig(&config);

EDMA_Init(EXAMPLE_FLEXIO_UART_DMA_BASEADDR, &config);

/* 為 TX&RX 設(shè)置 DMA 通道*/

DMAMUX_SetSource(EXAMPLE_FLEXIO_UART_DMAMUX_BASEADDR, FLEXIO_UART_TX_DMA_CHANNEL, EXAMPLE_TX_DMA_SOURCE);

DMAMUX_SetSource(EXAMPLE_FLEXIO_UART_DMAMUX_BASEADDR, FLEXIO_UART_RX_DMA_CHANNEL, EXAMPLE_RX_DMA_SOURCE);

DMAMUX_EnableChannel(EXAMPLE_FLEXIO_UART_DMAMUX_BASEADDR, FLEXIO_UART_TX_DMA_CHANNEL);

DMAMUX_EnableChannel(EXAMPLE_FLEXIO_UART_DMAMUX_BASEADDR, FLEXIO_UART_RX_DMA_CHANNEL);

EDMA_CreateHandle(&g_uartTxEdmaHandle, EXAMPLE_FLEXIO_UART_DMA_BASEADDR, FLEXIO_UART_TX_DMA_CHANNEL);

EDMA_CreateHandle(&g_uartRxEdmaHandle, EXAMPLE_FLEXIO_UART_DMA_BASEADDR, FLEXIO_UART_RX_DMA_CHANNEL);

FLEXIO_UART_TransferCreateHandleEDMA(&uartDev, &g_uartHandle, FLEXIO_UART_UserCallback, NULL, &g_uartTxEdmaHandle,&g_uartRxEdmaHandle);

/* 發(fā)送g_tipString */

xfer.data = g_tipString;

xfer.dataSize = sizeof(g_tipString) - 1;

txOnGoing = true;

FLEXIO_UART_TransferSendEDMA(&uartDev, &g_uartHandle, &xfer);

/* 等待發(fā)送完成 */

while (txOnGoing)

{

}

/* 開始應(yīng)答 */

sendXfer.data = g_txBuffer;

sendXfer.dataSize = ECHO_BUFFER_LENGTH;

while (1)

{

/* If TX is idle and g_txBuffer is full, start to send data. */

if ((!txOnGoing) && txBufferFull)

{

txOnGoing = true;

FLEXIO_UART_TransferSendEDMA(&uartDev, &g_uartHandle, &sendXfer);

}

/* 如果 g_txBuffer為空,加載 g_txBuffer */

if (!txBufferFull)

{

memcpy(g_txBuffer, "UUUUUUUU", ECHO_BUFFER_LENGTH);

txBufferFull = true;

}

}

}

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5421

    瀏覽量

    123306
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3287

    瀏覽量

    117197
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1265

    瀏覽量

    103228
  • 波特率
    +關(guān)注

    關(guān)注

    2

    文章

    310

    瀏覽量

    34722
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1065

    瀏覽量

    47670

原文標(biāo)題:MIMXRT1060 FLEXIO UART 波特率

文章出處:【微信號(hào):嵌入式 MCU,微信公眾號(hào):嵌入式 MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    can波特率計(jì)算

    can波特率其實(shí)并不難計(jì)算,這里給出了can波特率的簡(jiǎn)單計(jì)算,并給出了實(shí)例STM32的CAN波特率計(jì)算。講解CAN波特率計(jì)算原理。
    發(fā)表于 12-14 17:02 ?1.3w次閱讀
    can<b class='flag-5'>波特率</b>計(jì)算

    什么是串口波特率?串口波特率的分類及應(yīng)用詳解

    什么是串口波特率串口波特率是指串口通信系統(tǒng)中傳輸數(shù)據(jù)的速率。在UART串口通信中,數(shù)據(jù)以位(bit)的形式傳輸,波特率是指每秒鐘傳輸?shù)奈粩?shù)。在串口通信中,
    的頭像 發(fā)表于 08-08 10:09 ?6777次閱讀
    什么是串口<b class='flag-5'>波特率</b>?串口<b class='flag-5'>波特率</b>的分類及應(yīng)用詳解

    基于FPGA的波特率連續(xù)可調(diào)UART接口

    在FPGA上設(shè)計(jì)了一種波特率連續(xù)可調(diào)的UART接口,該接口符合RS-232C通信協(xié)議。將波特率轉(zhuǎn)換為比特持續(xù)時(shí)間,在固定工作時(shí)鐘頻率下通過(guò)改變比特持續(xù)時(shí)間來(lái)實(shí)現(xiàn)波特率的連續(xù)可調(diào),并將比
    發(fā)表于 06-01 09:56 ?10次下載

    根據(jù)SCI輸入信號(hào)自動(dòng)校準(zhǔn)波特率

    作者:Terry Deng 本文檔概述了一種基于 SCI/UART 輸入信號(hào),可以自動(dòng)校準(zhǔn)本設(shè)備SCI/UART波特率的方法,該方法適用與所有第三代C2000芯片,比如F2807x/37x
    的頭像 發(fā)表于 01-12 13:56 ?2913次閱讀
    根據(jù)SCI輸入信號(hào)自動(dòng)校準(zhǔn)<b class='flag-5'>波特率</b>

    關(guān)于UART/CAN/PLL時(shí)鐘計(jì)算波特率的方法

    SWM系列關(guān)于UART/CAN/PLL等時(shí)鐘相關(guān)模塊,計(jì)算波特率的方法。
    的頭像 發(fā)表于 03-18 16:52 ?8558次閱讀

    串口通訊波特率出現(xiàn)誤差的因素

    串口通訊(UART)是一種異步通訊,收發(fā)雙方需要按照約定的波特率進(jìn)行通訊。當(dāng)波特率出現(xiàn)誤差時(shí),會(huì)導(dǎo)致通訊出錯(cuò)。那導(dǎo)致波特率出現(xiàn)誤差的因素都有哪些呢,今天就來(lái)分析一下。
    的頭像 發(fā)表于 07-03 17:40 ?1.1w次閱讀

    MIMXRT1060 FLEXIO SPI速率

    FlexIO 支持 1/2/4/8/16/32位并行傳輸,參考寄存器 SHIFTCFT[PWIDTH]進(jìn)行設(shè)置。
    的頭像 發(fā)表于 01-29 10:12 ?1821次閱讀

    MIMXRT1060 EVK JTAG接口修改方法

    MIMXRT1060 EVK是NXP官方基于MIMXRT1062DVL6A芯片的開發(fā)板,該開發(fā)板帶有板載的CMSIS-DAP的仿真器,也留出了可以外接外部仿真器的20腳JTAG口。芯片
    的頭像 發(fā)表于 05-04 10:48 ?1641次閱讀
    <b class='flag-5'>MIMXRT1060</b> EVK JTAG接口修改方法

    波特率是什么?波特率設(shè)計(jì)

    從宏觀理解,波特率表征了串口的傳輸速度。
    的頭像 發(fā)表于 06-05 15:19 ?3w次閱讀
    <b class='flag-5'>波特率</b>是什么?<b class='flag-5'>波特率</b>設(shè)計(jì)

    什么是波特率?為什么要設(shè)置波特率

    歡迎來(lái)到東用知識(shí)小課堂!一、什么是波特率波特率(BaudRate)單位bps是用于衡量串口通信速度的單位,它表示每秒鐘發(fā)送的比特?cái)?shù)。如果一個(gè)串口的波特率為9600,就表示該串口在一秒鐘內(nèi)可以發(fā)送
    的頭像 發(fā)表于 04-08 00:00 ?7786次閱讀
    什么是<b class='flag-5'>波特率</b>?為什么要設(shè)置<b class='flag-5'>波特率</b>?

    什么是波特率波特率是如何影響CAN總線長(zhǎng)度的?

    信息在通信通道中傳輸?shù)乃俾时环Q為波特率。通俗地說(shuō),波特率是數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)乃俣?速率。這是以比特/秒表示的。因此,一秒鐘內(nèi)在通信網(wǎng)絡(luò)上傳輸?shù)谋忍財(cái)?shù)就是波特率
    的頭像 發(fā)表于 08-14 15:23 ?7610次閱讀
    什么是<b class='flag-5'>波特率</b>?<b class='flag-5'>波特率</b>是如何影響CAN總線長(zhǎng)度的?

    CW32單片機(jī)UART波特率設(shè)置介紹

    CW32單片機(jī)UART波特率設(shè)置介紹
    的頭像 發(fā)表于 10-24 17:35 ?1233次閱讀
    CW32單片機(jī)<b class='flag-5'>UART</b><b class='flag-5'>波特率</b>設(shè)置介紹

    什么是串口波特率?串口通信為什么要設(shè)置波特率

    在電子設(shè)備的世界中,數(shù)據(jù)是通過(guò)各種方式進(jìn)行傳輸?shù)摹F渲校谕ㄐ攀且环N常見的數(shù)據(jù)傳輸方式,它以其簡(jiǎn)單、可靠和廣泛的特性,成為了電子設(shè)備間通信的重要手段。而在串口通信中,有一個(gè)非常重要的參數(shù)——波特率
    的頭像 發(fā)表于 11-03 08:21 ?6634次閱讀
    什么是串口<b class='flag-5'>波特率</b>?串口通信為什么要設(shè)置<b class='flag-5'>波特率</b>?

    uart波特率和傳輸頻率的關(guān)系 UART串口的常用波特率為多少

    UART(Universal Asynchronous Receiver/Transmitter)是一種廣泛使用的異步串行通信技術(shù),它允許兩臺(tái)設(shè)備之間進(jìn)行雙向數(shù)據(jù)傳輸。在UART通信中,波特率和傳輸
    的頭像 發(fā)表于 10-06 16:12 ?6210次閱讀
    <b class='flag-5'>uart</b><b class='flag-5'>波特率</b>和傳輸頻率的關(guān)系 <b class='flag-5'>UART</b>串口的常用<b class='flag-5'>波特率</b>為多少

    波特率的定義和計(jì)算方法 波特率與數(shù)據(jù)傳輸速度的關(guān)系

    波特率的定義 波特率(Baud Rate),又稱調(diào)制速率或傳符號(hào),是指每秒傳輸?shù)姆?hào)數(shù)目,單位為波特(Bd)。它是一個(gè)數(shù)字信號(hào)通信中重要的參數(shù),在串行通信協(xié)議中經(jīng)常被用作衡量串行數(shù)據(jù)
    的頭像 發(fā)表于 11-22 09:49 ?8100次閱讀