cancel
Showing results for 
Search instead for 
Did you mean: 

about SPI HW chip select

DSai.1
Associate III

Dear Sir,

I am porting RFAL now. Based on 5.8 in UM2890, for HW chip selection, macro ST25R_COM_SINGLETXRX should be set. In st25r3916_com.c, the following code declared a local buffer.

#if defined(ST25R_COM_SINGLETXRX) && !defined(RFAL_USE_I2C)

static uint8_t comBuf[ST25R3916_BUF_LEN];               /*!< ST25R3916 communication buffer                 */

static uint16_t comBufIt;                       /*!< ST25R3916 communication buffer iterator            */

#endif /* ST25R_COM_SINGLETXRX */

I can understand why such local buffer is need. Is it dependent on some host specification which provide single byte access?

If I use a host that support multibytes access, is it not necessary

to use such local buffer for my case?

best regards

Dai Sai

1 ACCEPTED SOLUTION

Accepted Solutions
Ulysses HERNIOSUS
ST Employee

Dear Sai,

the folder test/compile_defines is a folder containing internal tests for continuous integration. The platform.h is not meant to have a meaningful implementation of the SPI.

Please rather see the various platform.h files in the Projects folder on top level.

I would like to also hint you on rfal.chm contained inside the RFAL folder and the UM2890 available from st.com.

Best Regards, Ulysses

View solution in original post

4 REPLIES 4
Ulysses HERNIOSUS
ST Employee

Hi Dai,

ST25R_COM_SINGLETXRX is for cases where you have and SPI driver which automatically drives the chip select pin and where every SPI frame needs to be handed as one buffer to the SPI driver.

Without setting this define the big buffer is not allocated but at the expense that the SPI throughput will be reduced due to needing multiple calls of SPI driver to transmit/receive one frame.

Best Regards, Ulysses

DSai.1
Associate III

Dear Ulysses,

thank you very much for your reply.

I got the reason.

I checked the platform.h at

ST25NFC_Embedded_Lib_ST25R3916_1.4.0\Middlewares\ST\RFAL\test\compile_defines

and found the define as followings

#define platformSpiSelect()              

#define platformSpiDeselect()             

#define platformSpiTxRx( txBuf, rxBuf, len )   

It seems platformSpiTxRx( txBuf, rxBuf, len )   is cleared here.

If so, how the transceivion by SPI is realized?

best regards

Dai Sai

Ulysses HERNIOSUS
ST Employee

Dear Sai,

the folder test/compile_defines is a folder containing internal tests for continuous integration. The platform.h is not meant to have a meaningful implementation of the SPI.

Please rather see the various platform.h files in the Projects folder on top level.

I would like to also hint you on rfal.chm contained inside the RFAL folder and the UM2890 available from st.com.

Best Regards, Ulysses

DSai.1
Associate III

Dear Ulysses,

thank you for you great help.

I will refer the document and code according to your advice.

Best regards

Dai Sai