STM32输出可控的任意连续模拟信号-续

之前实现的正弦信号会连续的输出不同脉冲的电压而组成的,但理论上好像不应该是脉冲而是连续的信号( 不会掉成低电平)。当时没有仔细查,不过现在已经知道原因了。

在设置dma时,数据宽度与程序中定义的数组数据类型不一致导致的,在dma中设置的数据宽度为"half word(半字16bit)“,但在程序中的数组的数据类型为"uint32_t”,导致dma在传送的时候,将数据前的0x0000也作为一个数据进行传输(尽管使用uint32_t的数据类型存储uint16_t的数据没有问题,但dma会按设置好的数据宽度依次取值,导致即使前面的0x0000没有意义,但也会被使用,除此之外,用一个大的类型装一个小的数据,是没有问题的),导致输出的电压变成0,从而变成了脉冲。

所以后面将正弦波的信号幅值大小的表数组数据类型改为uint16_t 后,问题解决,不再是脉冲,而是连续变化的信号了。正弦图形也变完整了,多出了下面的一半,也是因为此前宽度的问题导致dma只传输了一半(有一半给了无意义的0x0000)。

图片

图片

将信号放大,可以看到连续的信号也是由一段段的固定电压组成的,而不是此前一段段的脉冲。

图片

图片

现象与预想不一致,要么是做错了,要么想错了,透过现象看本质,找到根本原因就可以,希望对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值