How to dynamically configure SPI baudrate?

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

How to dynamically configure SPI baudrate?

1,108 次查看
fedora
Contributor III

Hi Team:

   I'm using S32K144 and configure the baudrate of spi2 to 100K through PE tools(refer to the attached image),  I want to dynamically configure the speed of spi2 to 50K/20K/10K/5K during the device running.

The following is the test code:

//***********************************************

uint32_t baud2;
status_t ret_sts;

lpspi_master_config_t spiConfig1;


spiConfig1.bitsPerSec = 10000; //10Kbps baudrate
spiConfig1.whichPcs = LPSPI_PCS2;
spiConfig1.pcsPolarity = LPSPI_ACTIVE_LOW;
spiConfig1.isPcsContinuous = false;
spiConfig1.bitcount = 16;
spiConfig1.clkPhase = LPSPI_CLOCK_PHASE_1ST_EDGE;
spiConfig1.clkPolarity = LPSPI_SCK_ACTIVE_HIGH;
spiConfig1.lsbFirst= false;
spiConfig1.transferType = LPSPI_USING_INTERRUPTS;

ret_sts = LPSPI_DRV_MasterConfigureBus(LPSPICOM2, (lpspi_master_config_t *)&spiConfig1, &baud2);
printf("ret_sts = %d,baud2=%d\r\n",ret_sts,baud2);

//****************************************************

After running, printf output:  ret_sts = 1,baud2=0

so LPSPI_DRV_MasterConfigureBus() return STATUS_ERROR,  trace into it and find the STATUS_ERROR is caused by the following code:

//****************************************************

if ((spiConfig->bitcount < 8U) || (spiConfig->bitcount > 4096U))
{

    printf("spi bitcount=%d\r\n",spiConfig->bitcount);
    return STATUS_ERROR;
}

//****************************************************

Then output   spi bitcount=0  ,  but the actual value of bitcount should be equal to 16.

 

May I ask where my method went wrong?

How to achieve dynamic configuration of SPI baudrate?

Thank you for your suggestion.

 

Best regards,

Fed

0 项奖励
回复
2 回复数

1,078 次查看
davidtosenovjan
NXP TechSupport
NXP TechSupport

Could you specify used RTD and example code?

0 项奖励
回复

1,073 次查看
fedora
Contributor III

Thanks !

I don't know what's the RTD.

The requirement is that when the device is activated, the speed of SPI can be 100k, but when the device is in sleep mode, the speed of SPI can only be 10k or even lower. Therefore, it is necessary to dynamically change the SPI speed.

Thanks and regards,

Fed

 

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2259213%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%A6%82%E4%BD%95%E5%8A%A8%E6%80%81%E9%85%8D%E7%BD%AE%20SPI%20%E6%B3%A2%E7%89%B9%E7%8E%87%EF%BC%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2259213%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%97%A8%EF%BC%8C%E5%9B%A2%E9%98%9F%EF%BC%9A%3C%2FP%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%20S32K144%20%E5%B9%B6%E9%80%9A%E8%BF%87%20PE%20%E5%B7%A5%E5%85%B7%E5%B0%86%20spi2%20%E7%9A%84%E6%B3%A2%E7%89%B9%E7%8E%87%E9%85%8D%E7%BD%AE%E4%B8%BA%20100K%EF%BC%88%E5%8F%82%E8%A7%81%E9%99%84%E5%9B%BE%EF%BC%89%EF%BC%8C%E6%88%91%E6%83%B3%E5%9C%A8%E8%AE%BE%E5%A4%87%E8%BF%90%E8%A1%8C%E6%9C%9F%E9%97%B4%E5%B0%86%20spi2%20%E7%9A%84%E9%80%9F%E5%BA%A6%E5%8A%A8%E6%80%81%E9%85%8D%E7%BD%AE%E4%B8%BA%2050K%2F20K%2F10K%2F5K%E3%80%82%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%B5%8B%E8%AF%95%E4%BB%A3%E7%A0%81%EF%BC%9A%3C%2FP%3E%3CP%3E%2F%2F***********************************************%3C%2FP%3E%3CP%3Euint32_t%20baud2%3B%3CBR%20%2F%3Estatus_t%20ret_sts%EF%BC%9B%3C%2FP%3E%3CP%3Elpspi_master_config_t%20spiConfig1%EF%BC%9B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EspiConfig1.bitsPerSec%20%3D%2010000%3B%20%2F%2F10Kbps%20%E6%B3%A2%E7%89%B9%E7%8E%87%3CBR%20%2F%3EspiConfig1.whichPcs%20%3D%20LPSPI_PCS2%3B%3CBR%20%2F%3EspiConfig1.pcsPolarity%20%3D%20LPSPI_ACTIVE_LOW%3B%3CBR%20%2F%3EspiConfig1.isPcsContinuous%3Dfalse%EF%BC%9B%3CBR%20%2F%3E%3CSTRONG%3EspiConfig1.bitcount%20%3D%2016%EF%BC%9B%3C%2FSTRONG%3E%3CBR%20%2F%3EspiConfig1.clkPhase%20%3D%20LPSPI_CLOCK_PHASE_1ST_EDGE%EF%BC%9B%3CBR%20%2F%3EspiConfig1.clkPolarity%20%3D%20LPSPI_SCK_ACTIVE_HIGH%EF%BC%9B%3CBR%20%2F%3EspiConfig1.lsbFirst%3Dfalse%3B%3CBR%20%2F%3EspiConfig1.transferType%3D%20lpspi_using_interrupts%EF%BC%9B%3C%2FP%3E%3CP%3Eret_sts%20%3D%20LPSPI_DRV_MasterConfigureBus(LPSPICOM2%2C(lpspi_master_config_t%20*)%26amp%3BspiConfig1%2C%26amp%3Bbaud2)%EF%BC%9B%3CBR%20%2F%3E%3CSTRONG%3E%3CEM%3Eprintf(%22ret_sts%20%3D%25d%2Cbaud2%3D%25d%5Cr%5Cn%22%2Cret_sts%2Cbaud2)%EF%BC%9B%3C%2FEM%3E%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%2F%2F****************************************************%3C%2FP%3E%3CP%3E%E8%BF%90%E8%A1%8C%E5%90%8E%EF%BC%8Cprintf%20%E8%BE%93%E5%87%BA%EF%BC%9A%20%3CEM%3E%3CSTRONG%3Eret_sts%20%3D%201%2Cbaud2%3D0%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FP%3E%3CP%3E%E5%9B%A0%E6%AD%A4%20LPSPI_DRV_MasterConfigureBus()%20%E8%BF%94%E5%9B%9E%3CSTRONG%3ESTATUS%3C%2FSTRONG%3E_ERROR%EF%BC%8C%3CSPAN%3E%E8%B7%9F%E8%B8%AA%E5%90%8E%E5%8F%91%E7%8E%B0%20STATUS_ERROR%20%E6%98%AF%E7%94%B1%E4%BB%A5%E4%B8%8B%E4%BB%A3%E7%A0%81%E5%BC%95%E8%B5%B7%E7%9A%84%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2F****************************************************%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3Eif%20((spiConfig-%26gt%3Bbitcount%26lt%3B%208U)%20%7C%7C%20(spiConfig-%26gt%3Bbitcount%26gt%3B%204096U))%3CBR%20%2F%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%20%20%20%20%3CEM%3E%3CSTRONG%3Eprintf(%22spi%20bitcount%3D%25d%5Cr%5Cn%22%2CspiConfig-%26gt%3Bbitcount)%EF%BC%9B%3C%2FSTRONG%3E%3C%2FEM%3E%3CBR%20%2F%3E%20%20%20return%20STATUS_ERROR%3B%3CBR%20%2F%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%2F%2F****************************************************%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E7%84%B6%E5%90%8E%E8%BE%93%E5%87%BA%20%20%20%3CSTRONG%3E%3CEM%3Espi%20bitcount%3D0%20%20%3C%2FEM%3E%3C%2FSTRONG%3E%EF%BC%8C%E4%BD%86%E4%BD%8D%E8%AE%A1%E6%95%B0%E7%9A%84%E5%AE%9E%E9%99%85%E5%80%BC%E5%BA%94%E7%AD%89%E4%BA%8E%20%3CEM%3E%3CSTRONG%3E16%3C%2FSTRONG%3E%3C%2FEM%3E.%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%E8%AF%B7%E9%97%AE%E6%88%91%E7%9A%84%E6%96%B9%E6%B3%95%E5%93%AA%E9%87%8C%E5%87%BA%E4%BA%86%E9%97%AE%E9%A2%98%EF%BC%9F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%20SPI%20%E6%B3%A2%E7%89%B9%E7%8E%87%E7%9A%84%E5%8A%A8%E6%80%81%E9%85%8D%E7%BD%AE%EF%BC%9F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E8%B0%A2%E8%B0%A2%E6%82%A8%E7%9A%84%E5%BB%BA%E8%AE%AE%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E7%BE%8E%E8%81%94%E5%82%A8%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2259379%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20dynamically%20configure%20SPI%20baudrate%EF%BC%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2259379%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E8%B0%A2%E8%B0%A2%E6%82%A8%EF%BC%81%3C%2FP%3E%3CP%3E%E6%88%91%E4%B8%8D%E7%9F%A5%E9%81%93%20RTD%20%E6%98%AF%E4%BB%80%E4%B9%88%E3%80%82%3C%2FP%3E%3CP%3E%E8%A6%81%E6%B1%82%E6%98%AF%EF%BC%8C%E5%BD%93%E8%AE%BE%E5%A4%87%E6%BF%80%E6%B4%BB%E6%97%B6%EF%BC%8CSPI%E7%9A%84%E9%80%9F%E5%BA%A6%E5%8F%AF%E4%BB%A5%E6%98%AF100k%EF%BC%8C%E4%BD%86%E6%98%AF%E5%BD%93%E8%AE%BE%E5%A4%87%E5%A4%84%E4%BA%8E%E7%9D%A1%E7%9C%A0%E6%A8%A1%E5%BC%8F%E6%97%B6%EF%BC%8CSPI%E7%9A%84%E9%80%9F%E5%BA%A6%E5%8F%AA%E8%83%BD%E6%98%AF10k%E7%94%9A%E8%87%B3%E6%9B%B4%E4%BD%8E%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E6%9C%89%E5%BF%85%E8%A6%81%E5%8A%A8%E6%80%81%E6%94%B9%E5%8F%98%20SPI%20%E9%80%9F%E5%BA%A6%E3%80%82%3C%2FP%3E%3CP%3E%E6%84%9F%E8%B0%A2%E5%B9%B6%E8%87%B4%E6%84%8F%3C%2FP%3E%3CP%3E%E7%BE%8E%E8%81%94%E5%82%A8%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2259354%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20dynamically%20configure%20SPI%20baudrate%EF%BC%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2259354%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E8%83%BD%E5%90%A6%E5%85%B7%E4%BD%93%E8%AF%B4%E6%98%8E%E4%BD%BF%E7%94%A8%E7%9A%84%20RTD%20%E5%92%8C%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81%EF%BC%9F%3C%2FP%3E%3C%2FLINGO-BODY%3E