How can I use nhs3152's SPI interface?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

How can I use nhs3152's SPI interface?

1,055件の閲覧回数
liliao
Contributor II

nhs3152‌lpcxpresso sdk‌

Hello, I want to use nhs3152's spi interface to communicate ADS1292R(from TI). But when I set the setting as User's guide, I found that the SPI driver isn't work as I hope. Here are my settings:

/* SSP initialization */
Init_SSP_PinMux();
Chip_SSP_Init(NSS_SSP);

ssp_format.frameFormat = SSP_FRAME_FORMAT_SPI;
ssp_format.bits = SSP_DATA_BITS;
ssp_format.clockMode = SSP_CLOCK_MODE0;
Chip_SSP_SetMaster(NSS_SSP, SSP_MODE_TEST);
Chip_SSP_SetFormat(NSS_SSP, ssp_format.bits, ssp_format.frameFormat, ssp_format.clockMode);
Chip_SSP_SetBitRate(NSS_SSP, 100000);

Buffer_Init();
/* Setup SSP buffer */
xf_setup.length = BUFFER_SIZE;
xf_setup.tx_data = Tx_Buf;
xf_setup.rx_data = Rx_Buf;
xf_setup.rx_cnt = xf_setup.tx_cnt = 0;

It would always run to a error condition which shows Overun.

タグ(2)
0 件の賞賛
返信
5 返答(返信)

910件の閲覧回数
driesmoors
NXP Employee
NXP Employee

Hi,

Can you compare your code with the example code snippets listed in the documentation? See <SDK>/docs/firmware.html, NHS31xx SW API > Modules > Drivers > ssp: Serial Peripheral Interface / Synchronous Serial Port controller, scroll down to example 1 and example 2.

Best,
Dries. 

0 件の賞賛
返信

910件の閲覧回数
liliao
Contributor II

Hi, I don't know why. But when I check the pin's voltage, it seems that voltage is just about 1V. After changed another nhs3152 chip, the output is back to 2.7V. 

For application reason, I need to simulate SPI through GPIO now. Unfortunately, using some configurations like example does not actuate pins.

some pins don't work at all, some start working,   however, the voltage is 1+V. the configuration is as follows:

Chip_Clock_System_SetClockFreq(NSS_SFRO_FREQUENCY/2);

Board_Init();

Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_8, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* MISO */
Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_9, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* MOSI */
Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_2, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* SSEL */
Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_6, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* SCLK */

Chip_GPIO_SetPinDIRInput(NSS_GPIO, Pinport, MISO);
Chip_GPIO_SetPinDIROutput(NSS_GPIO, Pinport, MOSI);
Set_MOSI_Low;  //define to set counterpart pin to the value I need
Chip_GPIO_SetPinDIROutput(NSS_GPIO, Pinport, SSEL);
Set_SSEL_High;
Chip_GPIO_SetPinDIROutput(NSS_GPIO, Pinport, SCLK);
Set_SCLK_Low;

May my answer will help you.

Regards,

Lee

0 件の賞賛
返信

910件の閲覧回数
mario_castaneda
NXP TechSupport
NXP TechSupport

Hi,

You can run a simple test using a GPIO.

For example the led.c

        Chip_IOCON_SetPinConfig(NSS_IOCON, sLeds[n].pio, IOCON_FUNC_0 | IOCON_RMODE_INACT);
        Chip_GPIO_SetPinDIROutput(NSS_GPIO, sLeds[n].port, sLeds[n].pin);‍‍
        Chip_GPIO_SetPinState(NSS_GPIO, sLeds[n].port, sLeds[n].pin, ((states >> n) & 1) == sLeds[n].polarity);

Regards,

Mario

0 件の賞賛
返信

910件の閲覧回数
mario_castaneda
NXP TechSupport
NXP TechSupport

Hi,

Could you please check the pin's voltage in the SPI pins without connecting the TI board?

Please let me know if you are getting the same return issue.

Regards,

Mario

0 件の賞賛
返信

910件の閲覧回数
liliao
Contributor II

Hi, I don't know why. But when I check the pin's voltage, it seems that voltage is just about 1V. After changed another nhs3152 chip, the output is back to 2.7V. 

For application reason, I need to simulate SPI through GPIO now. Unfortunately, using some configurations like example does not actuate pins.

some pins don't work at all, some start working,   however, the voltage is 1+V. the configuration is as follows:

Chip_Clock_System_SetClockFreq(NSS_SFRO_FREQUENCY/2);

Board_Init();

Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_8, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* MISO */
Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_9, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* MOSI */
Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_2, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* SSEL */
Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_6, IOCON_FUNC_0 |IOCON_RMODE_INACT); /* SCLK */

Chip_GPIO_SetPinDIRInput(NSS_GPIO, Pinport, MISO);
Chip_GPIO_SetPinDIROutput(NSS_GPIO, Pinport, MOSI);
Set_MOSI_Low;  //define to set counterpart pin to the value I need
Chip_GPIO_SetPinDIROutput(NSS_GPIO, Pinport, SSEL);
Set_SSEL_High;
Chip_GPIO_SetPinDIROutput(NSS_GPIO, Pinport, SCLK);
Set_SCLK_Low;

 

May my answer will help you.

Regards,

Lee

0 件の賞賛
返信