一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

通過(guò)DMAC進(jìn)行USART的數(shù)據(jù)回顯操作

電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2018-09-26 08:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

DMAC也可以和外設(shè)進(jìn)行數(shù)據(jù)交互。之前我們?cè)褂肞DC進(jìn)行USART的數(shù)據(jù)回顯,這次就使用DMAC完成相同的工作。而且由于DMAC有內(nèi)部的緩沖區(qū),實(shí)現(xiàn)起來(lái)更為簡(jiǎn)單。

一、USART設(shè)置

因?yàn)橹耙呀?jīng)做過(guò)相關(guān)的實(shí)驗(yàn),這里不再重復(fù)。需要注意的是,要注意JP11的跳線,以選擇正確的協(xié)議(RS232)。另外,如果使用硬件握手協(xié)議的話,注意設(shè)置PC端串口通信軟件的線路控制信號(hào)。

另外,由于不再使用手動(dòng)的緩沖區(qū)和PDC,所以不需要進(jìn)行相關(guān)的設(shè)置。同時(shí),也不用再使用USART的接收超時(shí)功能。

二、DMAC設(shè)置

本次使用的通道依然為通道0:

1#defineDMAC_CH0

啟用DMAC:

1//代碼略...

設(shè)置DSCR為0,以進(jìn)行單次傳輸:

1DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_DSCR=0;

設(shè)置SADDR以及DADDR。

因?yàn)閿?shù)據(jù)都在US_RHR和US_THR的低位上,所以將源地址和目標(biāo)地址分別設(shè)為這兩個(gè)寄存器的地址即可。

DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_SADDR=

&(USART1->US_RHR);

DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_DADDR=

&(USART1->US_THR);

設(shè)置CTRLA和CTRLB。

在USART數(shù)據(jù)位為8位時(shí),一次傳輸一個(gè)字節(jié)即可。

DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_CTRLA=

DMAC_CTRLA_BTSIZE(16)//進(jìn)行16次傳輸

|DMAC_CTRLA_SRC_WIDTH_BYTE//一次傳輸一個(gè)字節(jié)

|DMAC_CTRLA_DST_WIDTH_BYTE//同上

;

DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_CTRLB=

DMAC_CTRLB_FC_PER2PER_DMA_FC//外設(shè)至外設(shè)的傳輸

|DMAC_CTRLB_SRC_INCR_FIXED//傳輸時(shí)源地址固定

|DMAC_CTRLB_DST_INCR_FIXED//傳輸時(shí)目標(biāo)地址固定

;

設(shè)置CFG寄存器。

因?yàn)镈MAC和USART1之間有硬件握手接口,所以這里使用硬件握手接口即可(否則需要使用軟件握手接口手動(dòng)觸發(fā)傳輸)。USART1的發(fā)送接口號(hào)為5,接收接口號(hào)為6:

由于需要盡快將DMAC內(nèi)部緩沖區(qū)的內(nèi)容傳輸出去,所以一旦其數(shù)據(jù)量可以發(fā)送,就發(fā)送出去。

DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_CFG=

DMAC_CFG_SRC_H2SEL_HW//使用硬件握手

|DMAC_CFG_DST_H2SEL_HW

|DMAC_CFG_SRC_PER(6)//接口號(hào)

|DMAC_CFG_DST_PER(5)

|DMAC_CFG_SOD_DISABLE

|DMAC_CFG_FIFOCFG_ASAP_CFG//盡快發(fā)送數(shù)據(jù)

;

啟用中斷。

在傳輸任務(wù)完成后,需要重新啟用通道,以重新開(kāi)始任務(wù)。

1

2DMAC->DMAC_CHER=DMAC_CHER_ENA0<

//NVIC中斷設(shè)置的代碼略...

中斷處理。

在中斷中重新設(shè)置CTRLA寄存器的BTSIZE字段,再啟用通道即可。

voidDMAC_Handler(void)

{

uint32_tstatus=DMAC->DMAC_EBCISR;

//判斷是否為指定中斷

if(status&(DMAC_EBCISR_CBTC0<

{

//設(shè)置CTRLA

DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_CTRLA&=

~(uint32_t)DMAC_CTRLA_BTSIZE_Msk;

DMAC->DMAC_CH_NUM[DMAC_CH].DMAC_CTRLA|=

DMAC_CTRLA_BTSIZE(16);

//再次啟用通道

DMAC->DMAC_CHER=DMAC_CHER_ENA0<

}

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • PC
    PC
    +關(guān)注

    關(guān)注

    9

    文章

    2152

    瀏覽量

    156560
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1640

    瀏覽量

    56821
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    201

    瀏覽量

    31969
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何使用DMA進(jìn)行USART不定長(zhǎng)度接收

    在上一講中,我們對(duì)USART進(jìn)行了簡(jiǎn)單介紹,并講解了如何在不使用DMA的情況下進(jìn)行不定長(zhǎng)度數(shù)據(jù)接收,本講將著重講解如何使用DMA進(jìn)行
    的頭像 發(fā)表于 02-18 17:01 ?926次閱讀
    如何使用DMA<b class='flag-5'>進(jìn)行</b><b class='flag-5'>USART</b>不定長(zhǎng)度接收

    【RA4L1-SENSOR】DMAC傳輸數(shù)據(jù)

    在使用單片機(jī)搬運(yùn)大量數(shù)據(jù)時(shí),DMA是一個(gè)得力的助手,不需要占用 CPU。 瑞薩MCU中有兩類DMA,DMAC和DTC DMAC(Direct Memory Access Controller)為直接
    發(fā)表于 07-05 08:23

    如何用手機(jī)發(fā)送數(shù)據(jù)給esp8266到串口實(shí)現(xiàn)控制?

    通過(guò)手機(jī)發(fā)送數(shù)據(jù)控制LED,發(fā)送led_on點(diǎn)亮,發(fā)送led_off關(guān)閉,通過(guò)串口調(diào)試助手發(fā)送數(shù)據(jù)到串口可實(shí)現(xiàn)控制功能,用手機(jī)發(fā)送數(shù)據(jù)給e
    發(fā)表于 07-14 23:53

    FPGA作為從機(jī)通過(guò)SPI接收ARM傳來(lái)的數(shù)據(jù),傳的數(shù)據(jù)發(fā)生跳變

    改了下代碼,在FPGA的內(nèi)部時(shí)鐘(sys_clk)的上升沿對(duì)SPI上的時(shí)鐘和數(shù)據(jù)進(jìn)行操作,讀的數(shù)據(jù)正常了。請(qǐng)問(wèn)前者和后者的區(qū)別是啥?是因?yàn)?/div>
    發(fā)表于 08-06 11:45

    如何使用USART進(jìn)行通信/收發(fā)數(shù)據(jù)?

    如何使用USART進(jìn)行通信/收發(fā)數(shù)據(jù)?
    發(fā)表于 12-13 07:37

    如何通過(guò)USART1收發(fā)數(shù)據(jù)

    如何通過(guò)USART1收發(fā)數(shù)據(jù)?
    發(fā)表于 12-13 07:12

    如何解決STM32串口通信數(shù)據(jù)問(wèn)題?

    如何解決STM32串口通信數(shù)據(jù)問(wèn)題?
    發(fā)表于 12-13 07:30

    如何使用USART進(jìn)行通信/收發(fā)數(shù)據(jù)?

    如何使用USART進(jìn)行通信/收發(fā)數(shù)據(jù)
    發(fā)表于 02-07 07:29

    怎么使用USB模擬串口數(shù)據(jù)?

    如何更新外部flash中的數(shù)據(jù)?怎么使用USB模擬串口數(shù)據(jù)?
    發(fā)表于 02-22 07:29

    RTThread串口數(shù)據(jù)一切正常,msh亂碼怎么處理?

    串口數(shù)據(jù)一切正常,只有msh數(shù)據(jù)是亂碼,打開(kāi)了RT_USING_POSIX,
    發(fā)表于 05-11 09:32

    CubeMX生成的C代碼發(fā)出USART啟動(dòng)調(diào)用怎么辦?

    MX 生成的 C 代碼在 DMA 啟動(dòng)調(diào)用之前發(fā)出 USART 啟動(dòng)調(diào)用。我的代碼只是 USART 收到的任何文本。不幸的是,
    發(fā)表于 12-27 07:53

    USB供電時(shí)無(wú)法通過(guò)USART進(jìn)行ISP升級(jí)

    USB供電時(shí)無(wú)法通過(guò)USART進(jìn)行ISP升級(jí)USB供電時(shí)無(wú)法通過(guò)USART進(jìn)行ISP升級(jí)
    發(fā)表于 10-19 06:59

    對(duì) Flash 操作導(dǎo)致 USART 接收丟數(shù)據(jù)

    對(duì) Flash 操作導(dǎo)致 USART 接收丟數(shù)據(jù)
    發(fā)表于 11-25 14:49 ?0次下載

    對(duì)Flash 操作導(dǎo)致USART 接收丟數(shù)據(jù)

    對(duì)Flash 操作導(dǎo)致USART 接收丟數(shù)據(jù)(嵌入式開(kāi)發(fā)系統(tǒng)中宿主機(jī)概念)-該問(wèn)題客戶提出,發(fā)生在STM32F103VDT6 器件上。據(jù)其工程師講述:在其產(chǎn)品設(shè)計(jì)中,使用了STM32 片上Flash
    發(fā)表于 07-30 10:45 ?17次下載
    對(duì)Flash <b class='flag-5'>操作</b>導(dǎo)致<b class='flag-5'>USART</b> 接收丟<b class='flag-5'>數(shù)據(jù)</b>

    STM32U5開(kāi)發(fā)(1)----通過(guò)USART1發(fā)送數(shù)據(jù)

    通過(guò) USART1 發(fā)送一些數(shù)據(jù)。
    的頭像 發(fā)表于 07-27 11:35 ?1622次閱讀
    STM32U5開(kāi)發(fā)(1)----<b class='flag-5'>通過(guò)</b><b class='flag-5'>USART</b>1發(fā)送<b class='flag-5'>數(shù)據(jù)</b>