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.
工具/软件:Code Composer Studio
大家好、我现在在28335 XINTF 接口上遇到了一个非常奇怪的问题。 在电路板中、我将低数据总线(bit15~0) XINTF 引脚连接到 FPGA、并将 XINTF 配置为16位总线模式。 问题在于、当 DSP 将数据写入 FPGA 时、总线上的数据与 DSP 处理的数据不同、您可以在图1中看到这一点、但读取操作正常。
EALLOW;
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
//无写入缓冲
XintfRegs.XINTCNF2.bit.WRBUFF = 0;
// XCLKOUT 被启用
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// XCLKOUT=XTIMCLK/2
XintfRegs.XINTCNF2.bit.CLKMODE = 0;
XintfRegs.XTIMING7.bit.XWRLEAD=1;
XintfRegs.XTIMING7.bit.XWRACTIVE = 7;
XintfRegs.XTIMING7.bit.XWRTRAIL = 1;
//区域读取时序
XintfRegs.XTIMING7.bit.XRDLEAD=3;
XintfRegs.XTIMING7.bit.XRDACTIVE = 7;
XintfRegs.XTIMING7.bit.XRDTRAIL = 3;
//双倍全区域读/写前置/主动/后置定时
XintfRegs.XTIMING7.bit.X2TIMING=0;
//区域将对 XREADY 信号进行采样
XintfRegs.XTIMING7.bit.USEREADY=0;
XintfRegs.XTIMING7.bit.READYMODE = 0;//采样异步
//大小必须为:
// 0、1 = x32或
// 1、1 = x16保留其他值
XintfRegs.XTIMING7.bit.XSIZE = 3;
//组切换
//假设区域7运行缓慢,因此添加额外的 BCYC 周期
//从区域7切换到另一个区域时。
//这将有助于避免总线争用。
XintfRegs.XBANK/bit.Bank= 7;
XintfRegs.XBANK/bit.BCYC = 7;
//GPIO 配置
GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3;// XD15
GpioCtrlRegs.GPCMUX1.bit.GPIO65=3;// XD14
GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3;// XD13
GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 3;// XD12
GpioCtrlRegs.GPCMUX1.bit.GPIO68=3;// XD11
GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 3;// XD10
GpioCtrlRegs.GPCMUX1.bit.GPIO70=3;// XD19
GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 3;// XD8
GpioCtrlRegs.GPCMUX1.bit.GPIO72=3;// XD7
GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 3;// XD6
GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 3;// XD5
GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 3;// XD4
GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 3;// XD3
GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 3;// XD2
GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 3;// XD1
GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 3;// XD0
GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3;// xa0/XWE1n
GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3;// XA1
GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3;// XA2
GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3;// XA3
GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3;// XA4
GpioCtrlRegs.GPBMUX1.bit.GPIO45=3;// XA5
GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3;// XA6
GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3;// XA7
GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 3;// xA8
GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 3;// xA9
GpioCtrlRegs.GPCMUX2.bit.GPIO82=3;// XA10
GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 3;// XA11
GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 3;// XA12
GpioCtrlRegs.GPCMUX2.bit.GPIO85=3;// XA13
GpioCtrlRegs.GPCMUX2.bit.GPIO86=3;// XA14
GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3;// XA15
GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3;// XA16
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3;// XA17
GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3;// XA18
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3;// XA19
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3;// XREADY
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3;// XRNW
GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3;// XWE0
GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3;// XZCS0
GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3;// XZCS7
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3;// XZCS6
EDIS;
asm (" RPT #7 || NOP");
测试代码如下所示:
uint16 * ExRamStart =(uint16 *) 0x200000;
*(ExRamStart + 1)= 0x5a5a;
*(ExRamStart + 2)= 0x1234;
*(ExRamStart + 3)= 0xa5a5;
数据的某些位不正确、这真的让我感到困惑。
顺便说一下、我将 zone7用于 FPGA 存储器空间、所有 DSP 读取功能都运行良好。
TI 专家或其他专家可以为我提供帮助吗? 提前感谢。
您好!
我们的一位专家将在周二前回来、因为周一是美国假日。
您好、 Karthik、
感谢您的回复、有一些新情况:
初始化完成时,在 DSP 未向空间写入任何数据之前,但地址0x20000~0x200fff 已填充诸如0x3ff、0x8bf 等数据,这些数据来自何处?
当 DSP 将数据写入地址时、使用 *(0x201100)= 0x5a5a、低10位全为1、这意味着数据为0x5dff;但当我在同一地址的存储器中写入0x5a5a 时、总线上的数据是正确的。
此致、
方浩。
[引用 user="fan fanghaa"]顺便说一下,我将 zone7用于 FPGA 存储器空间,所有 DSP 读取功能都运行良好。
您如何确定读操作正常?
[引用用户="fan fanghaa"]初始化完成时,在 DSP 未向该空间写入任何数据之前,但地址0x20000~0x200fff 已填充0x3ff、0x8bf 等数据,这些数据来自何处?
如果这些位置没有被写入、那么内容是无效的、未经初始化的值。 如果您要连接 FPGA、则由 FPGA 确定。
[引用用户="fan fanghaa"]当 DSP 将数据写入地址使用 *(0x201100)= 0x5a5a 时,低10位全为1,这意味着数据是0x5dff;但当我在内存中的同一地址写入0x5a5a 时,总线上的数据是正确的。
请阐明如何在同一地址的存储器中执行写入0x5a5a、以及这与 *(0x201100)= 0x5a5a 有何不同。 当您说所有低10位为1时、您是否使用示波器观察电压? 这是首选方法、因为它可以向您显示总线上是否存在争用。