之前实现的正弦信号会连续的输出不同脉冲的电压而组成的,但理论上好像不应该是脉冲而是连续的信号( 不会掉成低电平)。当时没有仔细查,不过现在已经知道原因了。
在设置dma时,数据宽度与程序中定义的数组数据类型不一致导致的,在dma中设置的数据宽度为"half word(半字16bit)“,但在程序中的数组的数据类型为"uint32_t”,导致dma在传送的时候,将数据前的0x0000也作为一个数据进行传输(尽管使用uint32_t的数据类型存储uint16_t的数据没有问题,但dma会按设置好的数据宽度依次取值,导致即使前面的0x0000没有意义,但也会被使用,除此之外,用一个大的类型装一个小的数据,是没有问题的),导致输出的电压变成0,从而变成了脉冲。
所以后面将正弦波的信号幅值大小的表数组数据类型改为uint16_t 后,问题解决,不再是脉冲,而是连续变化的信号了。正弦图形也变完整了,多出了下面的一半,也是因为此前宽度的问题导致dma只传输了一半(有一半给了无意义的0x0000)。
将信号放大,可以看到连续的信号也是由一段段的固定电压组成的,而不是此前一段段的脉冲。
现象与预想不一致,要么是做错了,要么想错了,透过现象看本质,找到根本原因就可以,希望对你有所帮助。