欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 文档编号:5716830       资源大小:44.72KB        全文页数:5页
    • 资源格式: DOCX        下载积分:5文币     交易提醒:下载本文档,5文币将自动转入上传用户(最好的沉淀)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要5文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    [嵌入式系统设计(基于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);


    注意事项

    本文([嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第十三章.docx)为本站会员(最好的沉淀)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库