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

16.6410DMA簡述

發(fā)布者:rockstar6最新更新時間:2024-10-31 來源: cnblogs關(guān)鍵字:DMA  字符串 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

1.為什么需要DMA

首先看串口來傳遞信息:發(fā)送字符串。

發(fā)送函數(shù):在uart.c里增加下面發(fā)送函數(shù):

接下來在main.c里調(diào)用:

編譯make,

燒寫到開發(fā)板

制作SD卡,設(shè)置開發(fā)板從SD卡啟動,設(shè)置好minicom后給開發(fā)板上電,緊接著按著空格鍵:

選擇[1]格式化NandFlash:

按照上面,選擇從USB燒寫image,然后選擇1,燒寫uboot。然后把USB線拉到虛擬機(jī),會顯示USB按著成功了。接下來就可以燒寫編譯好的.bin文件了。

在Linux里按著USB驅(qū)動:

接下來燒寫:

串口信息:

設(shè)置開發(fā)板從NandFlash啟動:

可以看到我們串口的信息已經(jīng)打印出來了。說明串口發(fā)送信息成功了。

 

 

 

 

接下來看原始數(shù)據(jù)的傳輸:

上面就是原始數(shù)據(jù)的傳輸機(jī)制,輸出的傳輸需要CPU全程參與,當(dāng)buf里的數(shù)據(jù)很大的時候,這機(jī)制就浪費了CPU的大部分資源。

所以DMA機(jī)制就出現(xiàn)了,有DMA的機(jī)制如下:

該機(jī)制里,當(dāng)需要傳輸數(shù)據(jù)的時候,CPU給DMA控制器命令,告訴DMA要去源地址拿數(shù)據(jù),送到目的地址,然后就可以去干別的事了。DMA控制器接受到CPU的命令后,通過內(nèi)存與串口的數(shù)據(jù)通道,會不停從源地址獲取數(shù)據(jù),送到目的地址,知道結(jié)束。這就是DMADirect Memory Access機(jī)制。

接下來看看2440的DMA:

 

可以看到2440的DMA是四通道的。

每一個通道的請求源:

DMA的基本時序:

例如UART0的請求源,對應(yīng)的是通道0(Ch-0),UART2對應(yīng)的是通道3.

DMA請求到啟動的過程時序圖

首先是DREQ,DMA請求信號生效,當(dāng)請求信號生效兩個時鐘之后,響應(yīng)信號DACK生效,生效的時間是3個時鐘。DMA控制器正式接管了總線,就可以實現(xiàn)Read and Write了。

 

DMA的兩種工作模式:

 

 

6410的DMA:

可以看到6410有四個DMA控制器,每一個控制器有8個通道,就是說6410支持的是32DMA通道。

 

32通道支持的DMA源:

第一行的意思是:在DMA0或者SDMA0控制器的0通道上面,可以使用的是UART0源。依此類推。

四個控制器是DMA0,DMA1和SDMA0和SDMA1。在默認(rèn)的情況使用的是SDMA控制器,默認(rèn)值是0.

 

基本工作時序:

原理跟2440一樣的。

 

210的DMA:

上面可以看到210支持兩種類型的DMA:一種是內(nèi)存到內(nèi)存的,另一種是內(nèi)存到外設(shè)的。

210有三個控制器:DMA(內(nèi)存)、DMA0、DMA1.

 

三個控制器對應(yīng)的DMA源:

可以看到DMA源的后面都的是by only DMA0或DMA1,說明這種的DMA源只能給對應(yīng)的DMA控制器處理,如果是空白的則兩個都可以處理。


關(guān)鍵字:DMA  字符串 引用地址:16.6410DMA簡述

上一篇:17.DMA-2440
下一篇:15.210控制臺故障分析(解決問題的思路)

推薦閱讀最新更新時間:2025-06-07 23:47

一個字符串,將里面的數(shù)字字符和其他字符分開存放的程序
C++編程從鍵盤上輸入一個字符串,將里面的數(shù)字字符轉(zhuǎn)變成數(shù)值儲存到數(shù)組中并輸出 程序1: #include iostream #include string using namespace std; int main() { char *ch=new char ;//定義一個動態(tài)char數(shù)組 int *num=new int ;//定義一個動態(tài)int數(shù)組 cout 請輸入一串字符: endl; cin ch;//輸入字符串 cout 這串字符串里數(shù)字有: endl; int a=0; for(int i=0;i strlen(ch);i++) { if(ch ='0'
[單片機(jī)]
OK6410A 開發(fā)板 (八) 118 linux-5.11 OK6410A linux對arm異常處理的相同部分解析
.section .vectors, ax , %progbits .L__vectors_start: W(b) vector_rst W(b) vector_und W(ldr) pc, .L__vectors_start + 0x1000 W(b) vector_pabt W(b) vector_dabt W(b) vector_addrexcptn W(b) vector_irq W(b) vector_fiq 每種處理方式中相同的部分 // 8個入口 1. 直接定義 2個 vector_rst: ARM( swi SYS_ERROR0 )
[單片機(jī)]
Linux下s3c6410的GPIO操作(2)
1、還接著看上一篇的這個函數(shù) arch_initcall(s3c64xx_gpiolib_init); static __init int s3c64xx_gpiolib_init(void) { s3c64xx_gpiolib_add(gpio_4bit, ARRAY_SIZE(gpio_4bit), s3c64xx_gpiolib_add_4bit); s3c64xx_gpiolib_add(gpio_4bit2, ARRAY_SIZE(gpio_4bit2), s3c64xx_gpiolib_add_4bit2); s3c64xx_gpiolib_add(gpio_2bit, ARRAY_SI
[單片機(jī)]
STM32 DMA傳輸?shù)膯栴}分析
問題1、 用戶使用STM32G473RET6芯片,開發(fā)環(huán)境STM32CubeMX+Keil(LL庫)。使用DMA1通道1,在半傳輸中斷和完全傳輸中斷里,拷貝ADC采集的數(shù)據(jù)。在應(yīng)用過程中發(fā)現(xiàn)DMA半傳輸中斷和完全傳輸中斷不能獨立使用。 具體體現(xiàn): 1、在DMA1初始化時,打開了半傳輸中斷,關(guān)閉完全傳輸中斷,照樣能觸發(fā)完全傳輸中斷 LL_DMA_EnableIT_HT(DMA1,LL_DMA_CHANNEL_1);//打開DMA1半傳輸中斷 LL_DMA_DisableIT_TC(DMA1,LL_DMA_CHANNEL_1);//關(guān)閉DMA1完全傳輸中斷 2、在DMA1初始化時,關(guān)閉了半傳輸中斷,打開完全傳輸中斷,照樣能觸發(fā)半傳
[單片機(jī)]
STM32 <font color='red'>DMA</font>傳輸?shù)膯栴}分析
STM32F0使用LL庫實現(xiàn)DMA方式AD采集
在本次項目中,限于空間要求我們選用了STM32F030F4作為控制芯片。這款MCU不但封裝緊湊,而且自帶的Flash空間也非常有限,所以我們選擇了LL庫實現(xiàn)。在本文中我們將介紹基于LL庫的ADC的DMA采集方式。 1、概述 這次我們使用DMA方式實現(xiàn)對AD的采集,在遺忘我們使用HAL庫和標(biāo)準(zhǔn)庫都做過,這次我們使用LL庫來實現(xiàn)。接下來我們簡單了解一下STM32F030F4中的ADC和DMA。 首先看一看ADC,STM32F030F4是12位的ADC。它有多達(dá)19個多路復(fù)用通道,允許它測量來自16個外部和2個內(nèi)部源的信號。各種通道的A/D轉(zhuǎn)換可采用單通道、連續(xù)通道、掃描通道或不連續(xù)通道進(jìn)行。ADC的結(jié)果存儲在左對齊或右對齊的1
[單片機(jī)]
基于S3C6410的ARM11學(xué)習(xí)(五) 核心初始化之關(guān)閉看門狗
之前已經(jīng)完成了設(shè)置中斷向量表和設(shè)置處理器模式。下一步,就是要關(guān)閉看門狗。 看門狗,這個東西,在嵌入式系統(tǒng)里面是很常見的一個東西。這個是芯片預(yù)先做好的硬件,軟件可以對硬件進(jìn)行配置。說白了,這個東西就是一個定時器,定時器溢出的時候,如果設(shè)置開啟看門狗的話,就會強制CPU復(fù)位。這樣,好處就是防止程序跑飛。因為程序正常執(zhí)行的時候,我們肯定是要對看門狗計數(shù)清零的,這樣才能保證看門狗不會溢出,不會使CPU復(fù)位。 S3C6410的看門狗有兩個功能: 作為常規(guī)定時器,并且可以產(chǎn)生中斷 作為看門狗定時器,當(dāng)計數(shù)器遞減為0,產(chǎn)生復(fù)位信號。 下面是看門狗的框圖
[單片機(jī)]
基于S3C<font color='red'>6410</font>的ARM11學(xué)習(xí)(五) 核心初始化之關(guān)閉看門狗
STM32F103單片機(jī)使用DMA功能讀取ADC采樣數(shù)據(jù)
使用DMA功能操作外設(shè)時,可以極大的簡化代碼,提高程序的執(zhí)行效率。特別是在需要頻繁操作的外設(shè)上。比如現(xiàn)在要采集單片機(jī)16個ADC通道的電壓值,就可以使用DMA功能,直接將ADC通道轉(zhuǎn)換好的值,傳輸?shù)綌?shù)組中。需要操縱ADC的值時,直接去數(shù)組中拿數(shù)據(jù)就行。不需要再去判斷ADC數(shù)據(jù)轉(zhuǎn)換是否結(jié)束。下面直接通過代碼來實現(xiàn)。 首先初始化ADC,這里將ADC的16個采樣通道全部開啟。 void ADC1_Init ( void ) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphCloc
[單片機(jī)]
STM32HAL庫DMA模式串口收發(fā)
一.簡單了解 串口模式實現(xiàn)有三種 1.普通模式:在主函數(shù)中接收函數(shù) 2.中斷模式:產(chǎn)生的不影響主程序運行 3. DMA模式:與主函數(shù)互不影響,獨立運行 本文記錄第一種普通模式。 學(xué)習(xí)目標(biāo)是:實現(xiàn)DMA串口的數(shù)據(jù)收發(fā),發(fā)送數(shù)據(jù)時LED燈電平翻轉(zhuǎn)。 二.步驟 1-在原來工程基礎(chǔ)上,在stm32cubemx中增加dma,usart1中的DMA Settings,ADD USART1_RX循環(huán)接收和USART1_TX單次發(fā)送 2-添加MDA宏定義代碼 #define UART1_DMA uint8_t TdataDMA ={ welcome to uart DMA!rn }; uint8_t Rdata; 3-在主函數(shù)添加
[單片機(jī)]
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 镇赉县| 荥经县| 清远市| 保定市| 万山特区| 喜德县| 元江| 中方县| 象州县| 衡东县| 东莞市| 保康县| 郓城县| 旬阳县| 永平县| 湘潭市| 明光市| 肥东县| 兴业县| 莱阳市| 舒兰市| 察隅县| 宣恩县| 乡宁县| 丹巴县| 邵阳市| 乐亭县| 海南省| 台中县| 岳阳县| 房产| 南投市| 青田县| 印江| 平和县| 秦皇岛市| 萨迦县| 桐乡市| 久治县| 沐川县| 淮安市|