工具/软件:Code Composer Studio
你好。
1)
如果我创建一个几乎为空的程序。
#define main (1)
#include "include.h"
uint32 PRD = 0x3FFFF;
空 DPWM0 (空)
{
Dpwm0Regs.DPWMCTRL0.bit.PWM_EN = 0;
Dpwm0Regs.DPWMCTRL0.bit.CLA_EN = 0;
Dpwm0Regs.DPWMPRD.ALL = PRD;
Dpwm0Regs.DPWMEV1.ALL = 0;
Dpwm0Regs.DPWMEV2.ALL = PRD/2;
Dpwm0Regs.DPWMEV3.ALL = PRD/2;
Dpwm0Regs.DPWMEV4.ALL = PRD;
Dpwm0Regs.DPWMSAMPTRIG1.ALL = PRD/2;
Dpwm0Regs.DPWMCTRL2.bit.sample_trig_1_EN = 1;
Dpwm0Regs.DPWMCTRL0.bit.PWM_EN = 1;
}
void eADC (void)
{
}
void LoopMux (void)
{
LoopMuxRegs.CYCADJCTRL.bit.CYC_ADJ_EN = 1;
LoopMuxRegs.SAMPTRIGCTRL.bit.Fe1_TRIG_DPWM0_EN = 1;
LoopMuxRegs.FECTRL1MUX.bit.DPWM0_FRAME_SYNC_EN = 1;
UNION GLBEN_REG glben_store;
glben_store.all = 0;
glben_store.bit.DPWM0_EN = 1;
glben_store.bit.DPWM1_EN = 1;
glben_store.bit.FE_CTRL1_EN = 1;
LoopMuxRegs.GLBEN = glben_store;
}
void main()
{
//###################### 警告!!!! 请查看此####################
杂项 AnalogRegs.IOMUX.ALL = 0;
//##################################################
eADC();
DPWM0();
LoopMux();
while (1)
{
}
}
void c_int00 (void)
{
main();
}
我处于调试模式、将 FE 模式更改为连续 SAR
模块工作正常。
我得到正确的结果。
这证实了模块本身处于工作状态。
2)
但是、如果我使用以下代码更改 FE 模式:
(笑声)
void eADC (void)
{
FeCtrl1Regs.EADCCTRL.bit.EADC_MODE = 3;
}
(笑声)
我收到这样的结果:
您可以看到、模式已设置、但所有默认设置均已重置。
我在前一封信中谈到了这一点。
3)
如果我使用程序代码自行设置标准设置:
void eADC (void)
{
FeCtrl1Regs.EADCCTRL.bit.EADC_MODE = 3;
FeCtrl1Regs.EADCCTRL.bit.AFE_GAIN = 3;
FeCtrl1Regs.EADCCTRL.bit.SCFE_GAIN_FILTER_SEL = 1;
FeCtrl1Regs.EADCCTRL.bit.SCFE_CLK_DIV_2 = 1;
FeCtrl1Regs.EADCCTRL.bit.SCFE_ENA=1;
FeCtrl1Regs.SARTIMING.ALL = 0x432;
FeCtrl1Regs.PREBIASCTRL0.ALL = 0xFF00;
FeCtrl1Regs.SARCTRL.ALL = 0x28601000;
FeCtrl1Regs.EADCCTRL.bit.EADC_ENA=1;
}
然后、我获得与默认设置相同的设置。
但模块不能正常工作、EADCRAWVALUE = 0хF8 μ A 且不变。
如果 DAC 的值较低、这是正常现象。
但 DAC 会在 SAR 模式下自动更改该值。
1000000000b
0100000000b
0010000000b
(笑声)
0000000001b
EAP1输入端的电压与第一种情况相同。
感谢你的帮助。