This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教各位高手,我用DM642的MCBSP接口作为SPI主器件,来控制DA转换,寄存器初始化如下,程序可以跑起来,DXR寄存器中也有我想要发送的值,但用示波器测量没有信号,片选、时钟、数据都没有输出,有没有哪位大侠指点一下,已经搞了好几天了

void Init_25p80Module(void) {
unsigned int spcr, pcr, srgr, xcr, rcr, mcr;
unsigned int rcere0, rcere1, rcere2, rcere3;
unsigned int xcere0, xcere1, xcere2, xcere3;

spcr = MCBSP_SPCR_RMK (
MCBSP_SPCR_FREE_DEFAULT,
MCBSP_SPCR_SOFT_DEFAULT,
MCBSP_SPCR_FRST_OF(0),
MCBSP_SPCR_GRST_OF(0), //波特率复位
MCBSP_SPCR_XINTM_DEFAULT,
MCBSP_SPCR_XSYNCERR_DEFAULT,
MCBSP_SPCR_XRST_OF(0), //发送复位
MCBSP_SPCR_DLB_DEFAULT,
MCBSP_SPCR_RJUST_DEFAULT,
MCBSP_SPCR_CLKSTP_OF(0x03), //数据在发送时钟上升沿发送,在接收下降沿接受
MCBSP_SPCR_DXENA_OFF,
MCBSP_SPCR_RINTM_DEFAULT,
MCBSP_SPCR_RSYNCERR_DEFAULT,
MCBSP_SPCR_RRST_OF(0) //接收复位
);

pcr = MCBSP_PCR_RMK (
MCBSP_PCR_XIOEN_SP,
MCBSP_PCR_RIOEN_SP,
MCBSP_PCR_FSXM_OF(1),
MCBSP_PCR_FSRM_EXTERNAL,
MCBSP_PCR_CLKXM_OF(1), //设置CLKX引脚为输出
MCBSP_PCR_CLKRM_INPUT,
MCBSP_PCR_CLKSSTAT_0,
MCBSP_PCR_DXSTAT_0,
MCBSP_PCR_FSXP_OF(1), //设置FSX引脚为低电平有效
MCBSP_PCR_FSRP_ACTIVEHIGH,
MCBSP_PCR_CLKXP_OF(0), //数据无延时
MCBSP_PCR_CLKRP_FALLING
);

srgr = MCBSP_SRGR_RMK (
MCBSP_SRGR_GSYNC_FREE,
MCBSP_SRGR_CLKSP_RISING,
MCBSP_SRGR_CLKSM_OF(1), //采样率发生器时钟源至CPU时钟
MCBSP_SRGR_FSGM_OF(0), //在每个串行数据包传输期间FSX信号有效
MCBSP_SRGR_FPER_DEFAULT,
MCBSP_SRGR_FWID_DEFAULT,
MCBSP_SRGR_CLKGDV_OF(0x02) //定义采样率发生器时钟的降频因子
);

xcr = MCBSP_XCR_RMK (
MCBSP_XCR_XPHASE_SINGLE,
MCBSP_XCR_XFRLEN2_DEFAULT,
MCBSP_XCR_XWDLEN2_DEFAULT,
MCBSP_XCR_XCOMPAND_DEFAULT,
MCBSP_XCR_XFIG_YES,
MCBSP_XCR_XDATDLY_1BIT, //提供正确FSX信号启动时间
MCBSP_XCR_XFRLEN1_DEFAULT, //单相帧,一个数据元素
MCBSP_XCR_XWDLEN1_8BIT, //几位数
MCBSP_XCR_XWDREVRS_DISABLE
);

rcr = MCBSP_RCR_RMK (
MCBSP_RCR_RPHASE_SINGLE,
MCBSP_RCR_RFRLEN2_DEFAULT,
MCBSP_RCR_RWDLEN2_DEFAULT,
MCBSP_RCR_RCOMPAND_DEFAULT,
MCBSP_RCR_RFIG_YES,
MCBSP_RCR_RDATDLY_1BIT, //提供正确FSX信号启动时间
MCBSP_RCR_RFRLEN1_DEFAULT, //单相帧,一个数据元素
MCBSP_RCR_RWDLEN1_8BIT, //几位数
MCBSP_RCR_RWDREVRS_DISABLE
);

mcr = MCBSP_MCR_DEFAULT;
rcere0 = MCBSP_RCERE0_DEFAULT;
xcere0 = MCBSP_XCERE0_DEFAULT;
rcere1 = MCBSP_RCERE1_DEFAULT;
xcere1 = MCBSP_XCERE1_DEFAULT;
rcere2 = MCBSP_RCERE2_DEFAULT;
xcere2 = MCBSP_XCERE2_DEFAULT;
rcere3 = MCBSP_RCERE3_DEFAULT;
xcere3 = MCBSP_XCERE3_DEFAULT;


MCBSP_configArgs(hMcbsp1, spcr, rcr, xcr, srgr, mcr, rcere0, rcere1,rcere2, rcere3, xcere0, xcere1, xcere2, xcere3, pcr);

MCBSP_enableSrgr(hMcbsp1);
MCBSP_enableFsync(hMcbsp1);
mDelaymS(10);
IRQ_reset(IRQ_EVT_RINT1);
IRQ_enable(IRQ_EVT_RINT1);
IRQ_globalEnable();
mDelaymS(10);
MCBSP_enableRcv(hMcbsp1);
MCBSP_enableXmt(hMcbsp1);
mDelaymS(10);
memset(&config, 0x55, sizeof(config));
MCBSP_getConfig(hMcbsp1, &config);
}