主题中讨论的其他器件:HALCOGEN
您好!
我尝试通过 SPI1发送单个16位字、但遇到了意外行为。
我已将 Halcogen 设置为在 SPI 事务之前或之后发送一个16位字、而不会有任何额外的延迟。
调用 blocksize 为1的 spiTransmitAndReceiveData()时,会在作用域上产生以下行为:
时钟似乎激活了另外3个字。
这是预期的吗?
如何防止这种行为? 我希望时钟仅在 MOSI 线路输出的16个数据位的持续时间内有效。
谢谢、
Erik
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.
您好!
我尝试通过 SPI1发送单个16位字、但遇到了意外行为。
我已将 Halcogen 设置为在 SPI 事务之前或之后发送一个16位字、而不会有任何额外的延迟。
调用 blocksize 为1的 spiTransmitAndReceiveData()时,会在作用域上产生以下行为:
时钟似乎激活了另外3个字。
这是预期的吗?
如何防止这种行为? 我希望时钟仅在 MOSI 线路输出的16个数据位的持续时间内有效。
谢谢、
Erik
QJ、
下面是调用 SPI API 的代码和一些 Halcogen 生成的代码:
void SPI_TX_Rx_test () { spiDAT1_t 数据通信 fig1_t; uint16_t txData[16]、rxData[16]; uint32_t returnData; dataconfig1_t.CS_hold = true; dataconfig1_t.WDEL = true; dataconfig1_t.DFSEL = SPI_FMT_0; dataconfig1_t.CSNR =(0xFF ^(0x1 << 1)); TxData[0]= 0xFEFE; TxData[1]= 0xFEFE; TxData[2]= 0xFEFE; txData[3]= 0xFEFE; txData[4]= 0xFEFE; TxData[5]= 0xFEFE; txData[6]= 0xFEFE; txData[7]= 0xFEFE; //目前只使用单个块进行测试 返回数据= spiTransmitAndReceiveData (spiREG1、&dataconfig1_t、1、&txData[0]、&rxData[0]); } void spiInit (void) { //... /**-延迟*/ spiREG1->delay =(uint32)((uint32) 0U <<24U)/* C2TDELAY */ |(UINT32)((UINT32) 0U <<16U)/* T2CDELAY */ |(UINT32)((UINT32) 0U <<8U)/* T2EDELAY */ |(uint32)((uint32) 0U << 0U);// C2EDELAY * /**-数据格式0 */ spiREG1->FMT0 =(uint32)((uint32) 0U <<24U)// wdelay |(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/ |(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/ |(uint32)((uint32) 0U << 21U)//等待启用 |(uint32)((uint32) 0U << 20U)/*移位方向*/ |(uint32)((uint32) 0U << 17U)/*时钟极性*/ |(uint32)((uint32) 0U << 16U)/*时钟相位*/ |(uint32)((uint32) 79U << 8U)/*波特率预分频* |(uint32)((uint32) 16U << 0U);/*数据字长度*/ //... }