問(wèn)題描述
客戶在調(diào)試QSPI模塊過(guò)程中,將TC397的QSPI模塊的CPOL位設(shè)置為1,但是示波器顯示時(shí)鐘引腳輸出信號(hào)的空閑狀態(tài)并不是高電平,在debug模式下,可觀察到CPOL位已設(shè)置為1,這是怎么回事呢?
圖1
設(shè)置TC397的QSPI模塊工作在CPOL=1, CPH =1協(xié)議模式
解決過(guò)程
SpiIf_initChannelConfig()函數(shù)在初始化QSPI channel時(shí),提供了很多配置參數(shù)項(xiàng),其中就有clockPolarity,但是單單設(shè)置clockPolarity= SpiIf_ClockPolarity_idleHigh,雖然會(huì)將CPOL位設(shè)置為1,但是捕獲的波形顯示空閑狀態(tài)電平并未變成高電平。
這是由于SpiIf_initChannelConfig()函數(shù)的默認(rèn)參數(shù)項(xiàng)設(shè)置IDLE時(shí)序階段時(shí)長(zhǎng)為0,使得幀傳輸間隙缺少IDLE時(shí)序階段,所以需要設(shè)置csInactiveDelay > 0(如下所示)來(lái)插入IDLE時(shí)序階段,如下圖所示。
voidSpiIf_initChannelConfig(SpiIf_ChConfig*config,SpiIf*driver) { config->driver=driver; config->baudrate=0; config->mode.enabled=1; config->mode.autoCS=1; config->mode.loopback=0; config->mode.clockPolarity=SpiIf_ClockPolarity_idleHigh; config->mode.shiftClock=SpiIf_ShiftClock_shiftTransmitDataOnLeadingEdge; config->mode.dataHeading=SpiIf_DataHeading_msbFirst; config->mode.dataWidth=8; config->mode.csActiveLevel=Ifx_ActiveState_low; config->mode.csLeadDelay=SpiIf_SlsoTiming_0; config->mode.csTrailDelay=SpiIf_SlsoTiming_0; config->mode.csInactiveDelay=SpiIf_SlsoTiming_2; config->mode.parityCheck=0; config->mode.parityMode=Ifx_ParityMode_even; config->errorChecks.baudrate=0; config->errorChecks.phase=0; config->errorChecks.receive=0; config->errorChecks.transmit=0; }
圖2
審核編輯:劉清
-
示波器
+關(guān)注
關(guān)注
113文章
6276瀏覽量
185526 -
QSPI
+關(guān)注
關(guān)注
0文章
41瀏覽量
12227 -
CPOL
+關(guān)注
關(guān)注
0文章
9瀏覽量
10064
原文標(biāo)題:如何設(shè)置TC397的QSPI模塊工作在CPOL=1, CPH =1協(xié)議模式
文章出處:【微信號(hào):MCU頻道,微信公眾號(hào):MCU頻道】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論