OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3125|回复: 10

功能实现:用DAC1输出数据,USART1发送DAC1产生的数据

[复制链接]

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2017-1-6 17:16:17 | 显示全部楼层 |阅读模式
2金钱
想实现的功能如标题:设置DAC1产生数据,USART1发送DAC1生产的数据到串口助手。
用mini的板子,DAC1对应的输出引脚是PA4,USART1的接收RXD引脚是PA10。
实现过程:利用杜邦线把PA4引脚和PA10引脚连接,配置usart1和dac1完成后,串口助手只在每次复位后收到一个 ?


疑问:这样直接用杜邦线连接理论上能实现吗?
         定义接收的外部变量为16位的,DAC1产生的数据是12位的,这是不是会出现问题。。
望大神们,不吝赐教!!
谢谢~~~~

最佳答案

查看完整内容[请看2#楼]

数据寄存器是二进制数,但是PA4输出的不是这个二进制数,是一个根据这个数据寄存器里面的值和参考值转换出来的一个模拟量;比如你这个是12位的ADC,满量程就是4096,就是说你往数据寄存器里面写了个4096,那么PA4就是满量程输出,如果是电压,那就满量程输出电压。
亦余心之所善,
虽九死其犹未悔。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2016-12-22
在线时间
8 小时
发表于 2017-1-6 17:16:18 | 显示全部楼层
南有乔木 发表于 2017-1-7 10:00
我是这么理解,你帮忙看下对不对:
如果我想实现我所述的功能,就需要对DAC1数据寄存器的数据进行处理, ...

数据寄存器是二进制数,但是PA4输出的不是这个二进制数,是一个根据这个数据寄存器里面的值和参考值转换出来的一个模拟量;比如你这个是12位的ADC,满量程就是4096,就是说你往数据寄存器里面写了个4096,那么PA4就是满量程输出,如果是电压,那就满量程输出电压。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-6 17:27:06 | 显示全部楼层
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-7 08:43:25 来自手机 | 显示全部楼层
求助啊
回复

使用道具 举报

6

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
553
金钱
553
注册时间
2014-10-23
在线时间
195 小时
发表于 2017-1-7 08:54:10 | 显示全部楼层
要这么实时吗,先把转换的数据存在数组里,然后串口发送,不用杜邦线也可以。
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2016-12-22
在线时间
8 小时
发表于 2017-1-7 09:11:37 | 显示全部楼层
首先不懂你为什么要这样做,要实现什么;
1.DAC 的输出,我理解输出的是一个模拟量,一个实实在在的电压或者电流,你直接接到串口接收上没有任何意义;
2.串口是有起始位,数据位,停止位,还和波特率有关,不是随便什么数据接上就能接收的。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-7 09:26:09 | 显示全部楼层
亮仔同学 发表于 2017-1-7 09:11
首先不懂你为什么要这样做,要实现什么;
1.DAC 的输出,我理解输出的是一个模拟量,一个实实在在的电压或 ...

刚学完DAC,也学完串口,可以理解为做个小实验,加深理解。。
谢谢你的回答。。
说说我的疑问:DAC的输出值虽然是模拟量,但是值是通过DAC_SetChannel1Data函数设置的,我控制设置时间,这个模拟量不也是离散的了么 ,把这个模拟量通过杜邦线直接连到MCU的RXD引脚来接收。
是不是让串口接收数据,无论数据来自哪里都需要同步两者的起始位,数据位 波特率...反过来说,因为DAC发送数据的波特率首先无法设置,所以,这样实现不了~~~~
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-7 09:27:06 | 显示全部楼层
卡塔之魂 发表于 2017-1-7 08:54
要这么实时吗,先把转换的数据存在数组里,然后串口发送,不用杜邦线也可以。

用杜邦线是不是无法实现,因为波特率、起始位没法设置啊~~~
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2016-12-22
在线时间
8 小时
发表于 2017-1-7 09:42:50 | 显示全部楼层
南有乔木 发表于 2017-1-7 09:26
刚学完DAC,也学完串口,可以理解为做个小实验,加深理解。。
谢谢你的回答。。
说说我的疑问:DAC的输 ...

就像你的说的,控制模拟量的开关时间;只要高低电平符合,也是完全可以模拟出串口数据的,包括起始位,数据和停止位;所谓的波特率,也就是高低电平的持续时间不一样而已,也可以模拟出来,但这样就比较复杂了;
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-7 10:00:33 | 显示全部楼层
亮仔同学 发表于 2017-1-7 09:42
就像你的说的,控制模拟量的开关时间;只要高低电平符合,也是完全可以模拟出串口数据的,包括起始位,数 ...

我是这么理解,你帮忙看下对不对:
如果我想实现我所述的功能,就需要对DAC1数据寄存器的数据进行处理,PA4输出数据并不是串口数据,因为它就是一个单纯的数据,没有起始停止位也没有传输速度。但数据寄存器的数据不也是二进制数据吗,也是高低电平,不能传输主要是这些数据高低电平没有经过处理么?
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-7 13:19:40 来自手机 | 显示全部楼层
亮仔同学 发表于 2017-1-7 12:02
数据寄存器是二进制数,但是PA4输出的不是这个二进制数,是一个根据这个数据寄存器里面的值和参考值转换 ...

谢谢 受益匪浅
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 06:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表