DAC+DMA实现求助 | DAC-DMA装载数据是小端模式
在使用STC32G144k246芯片做信号发生器的时候发现DAC+DMA无法输出,可能是我的编程有误,在实测过程中,
我不使用DMA直接DAC输出的时候是正常的,可以输出我想要的电压,
但是当我加上DMA后输出就一直为0,我采用定时器17溢出触发,
实测定时器是正常工作的能够正常进入中断,DMA必须首次手动触发才能正常工作,
测试过程发现也能进入DMA中断,说明是有搬运的,
而且我串口打印缓冲区数组中的值是有数据的,但是用电压表测量输出没有任何变化。
我是采用AICUBE进行初始化操作的。
下面是我的一些初始化设置以及一些代码
AiCube没配置DAC1_CRDMAEN位,开了这个后有反应
另外发现手册一处寄存器命名错误:
ercircle 发表于 2026-1-3 21:08
AiCube没配置DAC1_CRDMAEN位,开了这个后有反应
另外发现手册一处寄存器命名错误:
DAC-DMA装载数据是小端模式。
请先别修改程序, 直接下载"obj"里面的"DAC.hex"测试, 下载时选择主频24MHz.
DAC1+OP1 DMA自动装载DAC从P0.7输出32点正弦波,P0.5(OP1负输出入端)要悬空。
P0.7输出接一阶RC滤波(3K+10F)送示波器观察。
输出正弦波频率 = 采样率 /32。
装载之前使用大小端交换即可
//大小端交换
void swap_endian_uint16_array(unsigned int *arr, unsigned int count)
{
unsigned int i;
unsigned short temp;
for(i = 0; i < count; i++)
{
temp = arr;
arr = ((temp & 0x00FF) << 8) | ((temp & 0xFF00) >> 8);
}
}
STC32G144K246,DAC-DMA例程及注意事项 - STC32G144K246 测试版块,PGA/运放,DAC,CAN-FD,主频100MHz以下 国芯人工智能技术交流网站 - AI32位8051交流社区
页:
[1]