主题中讨论的其他器件:C2000WARE
您好!
我想在 SPICLK 引脚上发送连续时钟、而不在 SPIMOSI 引脚上发送主器件数据。
是否有任何 SFR 设置可以执行相同操作的规定?
谢谢、此致、
Sachin
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.
您好!
我想在 SPICLK 引脚上发送连续时钟、而不在 SPIMOSI 引脚上发送主器件数据。
是否有任何 SFR 设置可以执行相同操作的规定?
谢谢、此致、
Sachin
要启用 SPI CLK、请更改 PCLKCR0寄存器(外设时钟控制寄存器)中的 SPIANCLK 位。 例如、'SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1;'。 这是一个 EALLOW 受保护的写入。
如果看 C2000WARE 中的示例,通常可以在 InitSysCtrl()函数中找到, 然后在 InitPeripheralClock()函数中找到。
最棒的
Marlyn
您好!
感谢您的输入。
在我的 SPI 应用中、从器件在 GPIO 有数据时通知主器件。 我已将该 GPIO 配置为外部中断、因此当存在数据外部中断时、我会设置通知标志并尝试在 MOSI 引脚上发送0x00以向 SPI 提供时钟。
请找到以下代码
a.循环的连续
for (;;)
{
// SpiaRegs.SPITXBUF = 0x00;
// if (flag = 1) for (i=0;i<15;i++) SpiaRegs.SPITXBUF = 0;
// while (Xint1Count<2) SpiaRegs.SPITXBUF = 0;
// while (notification=1) SpiaRegs.SPITXBUF = 0;
if (notification==1)
{
for (i=0;i<15;i++) SpiaRegs.SPITXBUF = 0;
显示屏=1;
}
if (display ==1)
{
for (i=0;i<10;i++) scia_xmit (RDATA[i]);
显示= 0;
scia_xmit (Xint1Count);
}
}
B.外部中断
_interrupt void
XINT1_ISR (空)
{
//GpioDataRegs.GPBCLEAR.ALL = 0x4; // GPIO34为低电平
Xint1Count++;
if (Xint1Count = 1)
{
通知=1;
}
否则、如果(Xint1Count = 2)
{
通知=0;
显示= 1;
}
//
//确认此中断以从组1获取更多内容
//
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
}
c.在 SPIFIFIFORX ISR 中捕获数据、当 SPI 接收 FIFO 中有一个字符时、中断发生
_interrupt void
spiRxFifoIsr (空)
{
RDATA_POIN++;
RDATA[ldaptr++]= SpiaRegs.SPIRXBUF;
}
使用此代码、我无法从从器件获取数据、因为在向从器件提供时钟时存在延迟。
请建议任何解决方案或代码、以便为 SPI 从器件提供时钟以采集数据。
谢谢、此致、
Sachin