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.
我正在参与一个 UPS 开发项目、其中使用双28335 DSP 作为控制器。这两个 DSP 通过 McBSP 进行通信。
我正在计算一个 DSP 无法从另一个 DSP 接收消息的问题。我尝试重新建立 McBSP 外设、它可以正常工作;但有时
DSP 可以关闭。下面是我使用的 McBSP 初始子 rootine、
EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 2;// GPIO20是 MDXA 引脚
GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 2;// GPIO21是 MDRA 引脚
GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 2;// GPIO22是 MCLKXA 引脚
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 1;// GPIO58是 MCLKRA 引脚(根据需要注释)
GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 2;// GPIO23是 MFSXA 引脚
GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 1;// GPIO59是 MFSRA 引脚(根据需要注释)
GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0;//启用 GPIO20 (MDXA)上的上拉
GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0;//启用 GPIO21上的上拉(MDRA)
GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0;//启用 GPIO22上的上拉电阻(MCLKXA)
GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0;//启用 GPIO58上的上拉电阻(MCLKRA)(需要注释)
GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0;//启用 GPIO23 (MFSXA)上的上拉电阻
GpioCtrlRegs.GPBPUD.bit.GPIO59 = 0;//启用 GPIO59上的上拉电阻(MFSRA)(根据需要注释)
GpioCtrlRegs.GPAQSEL2.bit.GPIO20 = 3;//异步输入 GPIO20 (MDXA)
GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 3;//异步输入 GPIO21 (MDRA)
GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 3;//异步输入 GPIO22 (MCLKXA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3;//异步输入 GPIO58 (MCLKRA)(需要注释)
GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3;//异步输入 GPIO23 (MFSXA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3;//异步输入 GPIO59 (MFSRA)(需要注释)
EDIS;
//********* 复位 McBSP
McbspaRegs.SPCR2.bit.frst=0;//帧同步发生器复位
McbspaRegs.SPCR2.bit.GRST=0;//采样率发生器复位
McbspaRegs.SPCR2.bit.XRST=0;//发送器复位
McbspaRegs.SPCR1.bit.RRST=0;//接收器复位
McbspaRegs.SPCR1.all=0x0000;//回送禁用,右对齐,
McbspaRegs.SPCR1.bit.CLKSTP= 0;//2014.4.4
McbspaRegs.pcr.all=0x0000;
McbspaRegs.pcr.bit.CLKXM =1;//Vivian20140409
McbspaRegs.pcr.bit.CLKRM =0;
McbspaRegs.pcr.bit.SCLKME = 0;//vivian20140404
McbspaRegs.SRGR2.bit.CLKSM =1;//Vivian20140409
McbspaRegs.SRGR2.bit.GSYNC=1;//vivian20140404
McbspaRegs.pcr.bit.CLKXP = 0;// CPOL = 0、CPHA = 0上升沿无延迟
McbspaRegs.pcr.bit.CLKRP = 0;//Vivian20140409
McbspaRegs.pcr.bit.FSRM = 0;
McbspaRegs.pcr.bit.FSRP=0;//20140404高电平有效
McbspaRegs.pcr.bit.FSXP=0;//20140409 Vivian 高电平有效
McbspaRegs.SRGR2.bit.FSGM=0;
McbspaRegs.pcr.bit.FSXM=1;//////////// Vivian 20140409
McbspaRegs.SRGR1.all= 0x0F;//帧宽度= 1 CLKG 周期、CLKGDV=16 // Ethan 2014.5.5
McbspaRegs.RCR2.bit.RDATDLY=01;// FSX 设置时间1在主控模式下。 0表示从机模式(接收)
McbspaRegs.XCR2.bit.XDATDLY=01;// FSX 设置时间1在主控模式。 0表示从机模式(发送)
McbspaRegs.RCR2.bit.RFIG = 1;//Ethan 2014.4.29
McbspaRegs.XCR2.bit.XFIG = 1;
McbspaRegs.RCR2.bit.RPHASE=0;//// Vivian 20140404
McbspaRegs.RCR1.bit.RFRLEN1 =0;// 2014.24 1字
McbspaRegs.RCR1.bit.RWDLEN1=5;// 32位字//Ethan 2014.4.4.30
McbspaRegs.XCR2.bit.XPhasy=0;//// Vivian 20140409
McbspaRegs.XCR1.bit.XFRLEN1 =0;// 2014.24 1字
McbspaRegs.XCR1.bit.XWDLEN1=5;// 32位字//Ethan 2014.4.4.30
McbspaRegs.SPCR1.bit.RINTM=0;
McbspaRegs.MFFINT.bit.RINT = 1;//启用接收中断
McbspaRegs.SPCR2.bit.GRST=1;//启用采样率发生器
delay_loop ();//等待至少2个 SRG 时钟周期
McbspaRegs.SPCR2.bit.XRST=1;//从复位中释放 TX
McbspaRegs.SPCR1.bit.RRST=1;//从复位中释放 RX
// delay_loop ();
clkg_delay_loop ();
McbspaRegs.SPCR2.bit.frst=1;//帧同步发生器复位
换句话说、是否有通过 McBSP 接口实现双 DSP 通信的参考设计?
Huizhao、
我有几个问题可以帮助我们找到问题的根源
侧注:请避免在纯文本编辑器中发布大量代码块。有一个"SyntaxHighlighter"工具可让您插入具有语法突出显示功能的格式化代码。 请选中"折叠"复选框。 这有助于使线程更易于使用。 我将编辑您的帖子、以显示使用 SyntaxHighlighter 的代码的外观。
谢谢、
标记