主题中讨论的其他器件:HALCOGEN
我只能在 HalCogen GUI 中将芯片选择的最大延时设置为255*个 VCLK (3.215us)时间段。
对于从器件,我需要50us 的 TDES_CS (请参阅下图)。
如何在 HalcogGen 和 CCS 中进行配置以获得50us 的片选时序?

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.
我只能在 HalCogen GUI 中将芯片选择的最大延时设置为255*个 VCLK (3.215us)时间段。
对于从器件,我需要50us 的 TDES_CS (请参阅下图)。
如何在 HalcogGen 和 CCS 中进行配置以获得50us 的片选时序?

您好、Sakthi、
这是 SPI TX 函数、用于发送数据块:
int32 spiTransmitData (spiBASE-t * SPI、spiDAT1_t * dataconfi_t、uint32 blocksize、uint16 * srcbuff)
{
…
}
您可以调用此函数仅传输1个字(2位到16位)、并手动插入延迟、然后调用此函数来传输下一个字:
spiTransmitData (...、blocksize=1、...);
延迟(
spiTransmitData (...、blocksize=1、...);
(笑声)
2.您可以修改 HAL 生成的代码:将延迟添加到 spiTransmitData (...) 功能:
uint32 spiTransmitData (spiBASE-t * SPI、spiDAT1_t *数据通信 fu_t、uint32块大小、uint16 * srcbuff)
{
易失性 uint32 SpiBuf;
uint16 Tx_Data;
uint32 Chip_Select_Hold =(dataconfig _t->CS_Hold)? 0x10000000U:0U;
uint32 WDray =(dataconfig _t->WDEL)? 0x04000000U:0U;
SPIDATAFMT_t DataFormat =数据通信 fap_t->DFSEL;
uint8芯片选择=数据通信 fet_t->CSNR;
/*用户代码开始(10)*/
/*用户代码结束*/
while (blocksize!= 0U)
{
if ((SPI->FLG & 0x000000FFU)!=0U)
{
中断;
}
if (blocksize == 1U)
{
CHIP_Select_HOLD = 0U;
}
/*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
TX_Data =* srcbuff;
SPI->DAT1 =((UINT32) DataFormat << 24U)|
((UINT32) ChipSelect << 16U)|
(WDelay)|
(CHIP_Select_HOLD)|
(uint32) Tx_Data;
/*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/
srcbuff +;
/*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
while ((SPI->FLG & 0x00000100U)!= 0x00000100U)
{
}/*等待*/
SpiBuf = SPI->BUF;
块大小----
delay();
}
/*用户代码开始(11)*/
/*用户代码结束*/
返回(SPI->FLG & 0xFFU);
}
BTW、请勿启用 CSHOLD。