请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28377S 工具/软件:Code Composer Studio
我想使用 McBSP 并将其配置为 SPI、现在、SPI 可以在正确的时序序列中工作、但我无法传输我想要的内容。
这是我需要的:一个帧有6个字、每个字有8位。
我不知道如何传输数据(例如:0x123456789ABC)。 波形应该像图1 ( 我在图中遗漏了一个字)。
这是我的发送器件代码:
char x[6]={0x12、0x34、0x56、0x78、0x9a、bb}; for (i=0;i<6;i++) { while (McbspbRegs.SPCR2.bit.XRDY = 1) {McbspbRegs.DXR1.All=x[i];} DELAY_US (15); }
它是7个字、但所有字都是相同的。
如果我写一次 Transmit、它将发送6个字、但所有字都是相同的。
我不知道如何传输和配置寄存器、或者我的配置有问题吗?
我的代码如下所示:
McbspbRegs.SPCR2.all=0x0000; //重置 FS 发生器、采样率发生器和发送器 McbspbRegs.SPCR1.all=0x0000; //重置接收器,右对齐字,数字回送中断 McbspbRegs.pcr.all=0x0F08; //(CLKXM=CLKRM=FSXM=FSRM=1、FSXP=1) McbspbRegs.SPCR1.bit.DLB = 0; McbspbRegs.SPCR1.bit.CLKSTP= 3; //与 CLKXP/CLKRP 一起确定时钟方案 McbspbRegs.pcr.bit.CLKXP = 0; // CPOL = 0、CPHA = 0上升沿无延迟 McbspbRegs.pcr.bit.CLKRP = 0; McbspbRegs.RCR2.bit.RDATDLY=0; McbspbRegs.XCR2.bit.XDATDLY=0; McbspbRegs.RCR2.bit.RFIG=1; McbspbRegs.XCR2.bit.XCONFIG=1; McbspbRegs.RCR1.bit.RWDLEN1=0; // 8位字 McbspbRegs.XCR1.bit.XWDLEN1=0; // 8位字 McbspbRegs.RCR1.bit.RFRLEN1=6; // 6个字 McbspbRegs.XCR1.bit.XFRLEN1=6; // 6个字 McbspbRegs.SRGR2.All=0x2000; // CLKSM=1、FPER = 1个 CLKG 周期 McbspbRegs.SRGR1.All= 0x0063; //帧宽度= 1 CLKG 周期、CLKGDV= McbspbRegs.SPCR2.bit.GRST=1; //启用采样率发生器 delay_loop(); //等待至少2个 SRG 时钟周期 McbspbRegs.SPCR2.bit.XRST=1; //从复位中释放 TX McbspbRegs.SPCR1.bit.RRST=1; //从复位中释放 RX McbspbRegs.SPCR2.bit.frst=1; //帧同步发生器复位
是否有人可以给我一些建议或我可以参考的示例代码? 谢谢!!

