2266964_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2266964_zh-CN

2266964_zh-CN

PCS DSPI 始终处于活动状态 hi

早上好

我对 DSPI 的行为非常赞赏。使用 KV58 塔......SDK 中的示例运行正常。我可以选择 CS0 的极性。
我的应用程序使用的驱动程序 SPI 只是复制粘贴。而 CS0 始终处于激活状态。
我看了一遍又一遍......我找不到原因。
如果有人愿意花一点时间,我可以发送文件或整个项目。
我感谢每一份支持

皮耶罗

Re: PCS DSPI always active hi你好,我是
,我有一个了不起的修复和问题。
这是 DSPI 初始化的代码

static bool MCP23S17_DspiInit(void)
{
dspi_master_config_t masterConfig;
uint32_t srcClock_Hz;

CLOCK_EnableClock( kCLOCK_Spi0 );
DSPI_Deinit( MCP23S17_DSPI_BASE );

DSPI_MasterGetDefaultConfig(&masterConfig);

masterConfig.whichCtar = MCP23S17_DSPI_CTAR;
masterConfig.ctarConfig.baudRate = MCP23S17_SPI_BAUDRATE;
masterConfig.ctarConfig.bitsPerFrame= MCP23S17_SPI_BITS_PER_FRAME;
masterConfig.ctarConfig.cpol = MCP23S17_SPI_CPOL;
masterConfig.ctarConfig.cpha = MCP23S17_SPI_CPHA;
masterConfig.ctarConfig.direction = MCP23S17_SPI_SHIFT_DIR;
masterConfig.ctarConfig.pcsToSckDelayInNanoSec= MCP23S17_DELAY_NS;
masterConfig.ctarConfig.lastSckToPcsDelayInNanoSec= MCP23S17_DELAY_NS;
masterConfig.ctarConfig.betweenTransferDelayInNanoSec= MCP23S17_DELAY_NS;

/* 启动时的默认 PCS;实际 PCS 由稍后通过 configFlags 选择 */
masterConfig.whichPcs = MCP23S17_DSPI_PCS0;
masterConfig.pcsActiveHighOrLow= kDSPI_PcsActiveLow;

masterConfig.enableContinuousSCK= false;
masterConfig.enableRxFifoOverWrite= false;
masterConfig.enableModifiedTimingFormat= false;
masterConfig.samplePoint = kDSPI_SckToSin0Clock;

srcClock_Hz = MCP23S17_DSPI_CLK_FREQ;
if (srcClock_Hz == 0U)
{
return false;
}

DSPI_MasterInit(MCP23S17_DSPI_BASE,&masterConfig, srcClock_Hz);
SPI0->MCR |= (0x003F0000);

return true;
}


这里的惊喜是
SPI0->MCR |= (0x003F0000);

这一行需要存在 ..在初始化之后,尽管明确设置为低电平激活 CS,但 CS 始终为高电平激活。但 SDK 中的程序是一样的。因此,
,给我解释一下到底哪里出了问题。

谢谢
Pietro
Re: PCS DSPI always active hi

你好@pietrodicastri

请参考 SPIx_MCR 寄存器中的 PCSIS 字段。当某位设置为 0 时,PCSx 的非活动状态为低电平,高电平表示活动状态。还需注意的是,该位的作用仅在模块启用时才会发生。确保在启用 SPI 接口前正确配置该位。
Alice_Yang_0-1766472188581.pngAlice_Yang_0-1766472188581.png

BR

爱丽丝


标记 (1)
无评分
版本历史
最后更新:
‎12-24-2025 03:31 AM
更新人: