完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我用TMS320F28335对一个正弦信号进行采样,频率约为1kHz,正弦信号中的直流偏置为1.65v,通过CCS6.0中的Graph工具看采集的数据波形时,发现连续多个采样信号之间的值相等,整个波形呈现锯齿状,如下图所示(两个图中的数据相同,使用bar模式看的更清楚些),ADC和DMA模块的初始化代码如下:
void pwmset()//EPWM初始化代码 [ EPwm1Regs.TBPRD=50;//4us; EPwm1Regs.TBCTR=0; EPwm1Regs.TBPHS.all=0; EPwm1Regs.TBCTL.bit.FREE_SOFT=1; EPwm1Regs.TBCTL.bit.CLKDIV=1;//sys/12 EPwm1Regs.TBCTL.bit.HSPCLKDIV=3; EPwm1Regs.TBCTL.bit.PRDLD=0; EPwm1Regs.TBCTL.bit.PHSEN=0; EPwm1Regs.TBCTL.bit.CTRMODE=0; EPwm1Regs.ETSEL.bit.SOCAEN=1; EPwm1Regs.ETSEL.bit.SOCASEL=2; EPwm1Regs.ETSEL.bit.SOCBEN=0; EPwm1Regs.ETPS.bit.SOCAPRD=1; ] void adcset()//ADC初始化代码 [ InitAdc(); AdcRegs.ADCTRL1.bit.ACQ_PS=1;//预定标系数=1 AdcRegs.ADCTRL1.bit.CONT_RUN=0;//非连续运行 AdcRegs.ADCTRL1.bit.CPS=1;//ADC模块时钟预分频 AdcRegs.ADCTRL1.bit.SEQ_CASC=1;//SEQ级联模式 AdcRegs.ADCTRL2.bit.EPWM_SOCB_SEQ=0;// AdcRegs.ADCTRL2.bit.RST_SEQ1=1; AdcRegs.ADCTRL2.bit.SOC_SEQ1=0; AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0; AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1=1; AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0; AdcRegs.ADCTRL3.bit.SMODE_SEL=0; AdcRegs.ADCTRL3.bit.ADCCLKPS=3;//12.5Mh; AdcRegs.ADCCHSELSEQ1.bit.CONV00=0; AdcRegs.ADCCHSELSEQ1.bit.CONV01=1; AdcRegs.ADCCHSELSEQ1.bit.CONV02=2; AdcRegs.ADCCHSELSEQ1.bit.CONV03=3; AdcRegs.ADCCHSELSEQ2.bit.CONV04=4; AdcRegs.ADCCHSELSEQ2.bit.CONV05=5; AdcRegs.ADCMAXCONV.bit.MAX_CONV2=0x5; // AdcRegs.ADCMAXCONV.bit.MAX_CONV1=0x0; ] void dmaset()//DMA初始化代码 [ DMAInitialize(); DMADest=&DMABuf1[0]; DMASource= &AdcMirror.ADCRESULT0; DMACH1AddrConfig(DMADest,DMASource); DMACH1BurstConfig(6,1,512);//设置每次Burst的字节数、源地址增量、目标地址增量 DMACH1TransferConfig(511,0,0);//设置每次传送包含多少个Burst、传送完毕发中断,源地址增量、目标地址增量 DMACH1WrapConfig(0,0,0,1);//no use wrap; EALLOW; // Set up MODE Register: DmaRegs.CH1.MODE.bit.PERINTSEL = DMA_SEQ1INT; // Passed DMA channel as peripheral interrupt source DmaRegs.CH1.MODE.bit.PERINTE = PERINT_ENABLE; // Peripheral interrupt enable DmaRegs.CH1.MODE.bit.ONESHOT = ONESHOT_DISABLE; // Oneshot disable, tansfer won't stop between bursts DmaRegs.CH1.MODE.bit.CONTINUOUS = CONT_ENABLE; // Continous enable, channel won't be disabled at the end of transfer DmaRegs.CH1.MODE.bit.SYNCE = SYNC_DISABLE; // Peripheral sync enable/disable DmaRegs.CH1.MODE.bit.SYNCSEL = SYNC_SRC; // Sync effects source or destination DmaRegs.CH1.MODE.bit.OVRINTE = OVRFLOW_DISABLE; // Enable/disable the overflow interrupt DmaRegs.CH1.MODE.bit.DATASIZE = SIXTEEN_BIT; // 16-bit/32-bit data size transfers DmaRegs.CH1.MODE.bit.CHINTMODE = CHINT_END; // Generate interrupt to CPU at beginning/end of transfer DmaRegs.CH1.MODE.bit.CHINTE = CHINT_ENABLE; // Channel Interrupt to CPU enable(PIE) // Clear any spurious flags: DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags DmaRegs.CH1.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags // Initialize PIE vector for CPU interrupt: // Enable DMA CH1 interrupt in PIE EDIS; ] |
|
相关推荐
3 个讨论
|
|
只有小组成员才能发言,加入小组>>
586 浏览 0 评论
1643 浏览 0 评论
2082 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1534 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1374 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1785浏览 29评论
2812浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1744浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1656浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1675浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-10 14:09 , Processed in 0.530322 second(s), Total 40, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
9310