ImageVerifierCode 换一换
格式:DOCX , 页数:5 ,大小:44.72KB ,
文档编号:5716830      下载积分:5 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5716830.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(最好的沉淀)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文([嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十三章.docx)为本站会员(最好的沉淀)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十三章.docx

1、嵌入式系统设计(基于STM32F429)第 13 章课后题参考答案1. 常用的 DAC 电路结构有哪些? 答:权电阻网络 DAC 、R2R 倒 T 形电阻网络 DAC、电流型网络 DAC2. 分辨率为 12 位,参考电压为 3.3V 的 DAC,想要输出 1.2V 的电压,请问输出这一电压对应的数字信号是多少?答:(1.2/3.3)*4095 = 14893. STM32F429 微控制器的DAC 有哪些触发方式(转换启动方式)? 答:(1) 、软件触发:通过写 DAC 的数据保持寄存器 触发 DAC 转换(2) 、硬件信号触发: 通过定时器 TRGO 事件 或 外部中断线 9 触发。4. 请

2、问寄存器 DHR 和 DOR 之间有什么关系? 答:DHR:数据保持寄存器。可读写。DOR:数据输出寄存器。只读。 程序一般操作的是 DHR 寄存器。5. DAC 单通道的数据格式有哪些? 答:(1) 对于 DAC 单通道 x,有三种可能的方式。8 位右对齐:软件必须将数据加载到 DAC_DHR8Rx7:0位(存储到 DHRx11:4位)。12 位左对齐:软件必须将数据加载到 DAC_DHR12Lx15:4位(存储到 DHRx11:0位)。12 位右对齐:软件必须将数据加载到 DAC_DHR12Rx11:0位(存储到 DHRx11:0位)。(2) 对于 DAC 双通道,有以下可能的方式。8 位

3、右对齐:将DAC 通道 1 的数据加载到 DAC_DHR8RD7:0位(存储到DHR111:4位),将 DAC 通道 2 的数据加载到 DAC_DHR8RD15:8位(存储到 DHR211:4位)。12 位左对齐:将 DAC 通道 1 的数据加载到 DAC_DHR12RD15:4位(存储到 DHR111:0位),将 DAC 通道 2 的数据加载到 DAC_DHR12RD31:20位(存储到 DHR211:0位)。12 位右对齐:将 DAC 通道 1 的数据加载到 DAC_DHR12RD11:0位(存储到 DHR111:0位),将 DAC 通道 2 的数据加载到 DAC_DHR12RD27:16

4、位(存储到 DHR211:0位)。6. 软件如何启动一次 DAC 转换? 答:通过写 DAC 的 DHR 寄存器即可实现。有以下函数:void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data) void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data)void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1)7. 作为 DAC 的模拟信号输出通道的 GPIO 引脚需要怎么初始化

5、?以 DAC1 为例。答:GPIO_InitTypeDef GPIO_InitStructure;/*-第 1 步*/* 使 能 GPIOA 时 钟 */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);/* 使 能 DAC 时 钟 */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);/*-第 2 步*/* DAC 的 GPIO 配 置 , 模 拟 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPI

6、O_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure);8. 编程序配置 STM32F429 微控制器的 DAC1 产生一个频率为 2kHz 的正弦波。答:1) 结合定时器中断实现。在每次定时器中断中写 DAC 数据保持寄存器启动 DAC 转换。教材中例 13.5,修改 TIM_Config(void)。TIM_TimeBaseStructure.TIM_Period = 2250-1;/ 采 样 频 率 = 40KHz TIM_

7、TimeBaseStructure.TIM_Prescaler = 0x0;/预分频,不分频 90M / (0+1) = 90M TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;/时钟分频系数TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/向上计数模式2) 结合定时器和 DMA 实现。使用定时器溢出事件 作为 DAC 的转换触发信号。使用 DMA 将波形数据缓冲区中的数据源转移到 DA

8、C 数据保持寄存器中。#definePi3.1415926#definef1000/正弦波频率 2KHz#definefs20000/采样频率40KHz/* 波形数据*/uint16_t Sine_Table20;(1) DAC 配置函数此函数执行之后,定时器每次溢出都会触发一次 DAC 自动转换,DMA 控制转换的数据来源。void DAC_Mode_Init(void)uint32_t Idx = 0;/* 填充正弦波形数据,双通道右对齐*/ for (i = 0; i 20; i+)Sine_Table i = (uint16_t )(float)4095*(1+sin(2*i*Pi*

9、f /fs)/2);DAC_Config();/DAC 初始化DAC_TIM_Config();/定时器 初始化DAC_DMA_Config();/DMA 初始化(2) DAC 初始化函数static void DAC_Config(void)GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitStructure;/* 使 能 GPIOA 时 钟 */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);/* 使能 DAC 时钟 */RCC_APB1PeriphClock

10、Cmd(RCC_APB1Periph_DAC, ENABLE);/* DAC 的 GPIO 配置,模拟输入 */* DAC 的 GPIO 配 置 , 模 拟 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure);/* 配置 DAC 通道 1 */DAC_InitStructure.DAC_Trig

11、ger=DAC_TRIGGER;/ 使 用 TIM2 的 溢 出 触 发 DAC DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0; /屏蔽幅值设置DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None; / 不使用波形发生器DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Enable; /启用输出缓冲DAC_Init(DAC_CH1_CHANNEL, &DAC_InitStruct

12、ure);/* 使 能 通 道 1 由 PA4 输 出 */ DAC_Cmd(DAC_CH1_CHANNEL, ENABLE);(3) 定时器初始化static void DAC_TIM_Config(void)TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;/* 使 能 TIM2 时 钟 ,TIM2CLK 为 180M */ RCC_APB1PeriphClockCmd(DAC_TIM_CLK, ENABLE);/* TIM2 基本定时器配置 */TIM_TimeBaseStructure.TIM_Period = 2250-1;/ 采 样 频 率

13、= 40KHz TIM_TimeBaseStructure.TIM_Prescaler = 0x0;/ 预 分 频 , 不 分 频 90M / (0+1) = 90M TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;/时钟分频系数TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(DAC_TIM, &TIM_TimeBaseStructure);/* 配置 TIM2 触发源 */TIM_SelectOutputTrigger(DAC_TIM, TIM

14、_TRGOSource_Update);/* 使 能 TIM2 */ TIM_Cmd(DAC_TIM, ENABLE);/向上计数模式(4) DMA 初始化static void DAC_DMA_Config(void)DMA_InitTypeDef DMA_InitStructure;/* DAC1 使 用 DMA1 通 道 7 数 据 流 5 时 钟 */ RCC_AHB1PeriphClockCmd(DAC_DMA_CLK, ENABLE);/* 配 置 DMA2 */ DMA_InitStructure.DMA_Channel = DAC_CHANNEL;DMA_InitStructu

15、re.DMA_PeripheralBaseAddr = (uint32_t)(DAC_BASE+0x20);/外设数据地址DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t) Sine_Table ; / 内 存 数 据 地 址DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;/数据传输方向内存至外设DMA_InitStructure.DMA_BufferSize = 20;/ 缓 存 大 小 为 20 DMA_InitStructure.DMA_PeripheralInc = DMA_

16、PeripheralInc_Disable; /外设数据地址固定DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;/内存数据地址自增DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;/半字为单位DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_HalfWord;/ 半字为单位DMA_InitStructure.DMA_Mode = DMA_Mode_Circula

17、r; DMA_InitStructure.DMA_Priority = DMA_Priority_High;/循环模式/高 DMA 通道优先级DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;DMA_Init(DAC_DMA_STREAM, &DMA_InitStructure);/* Enable DMA_Stream */ DMA_Cmd(DAC_DMA_STREAM, ENABLE);/* 使 能 DAC 的 DMA 请 求 */ DAC_DMACmd(DAC_CH1_CHANNEL, ENABLE);

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|