How can I use nhs3152's SPI interface?

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

How can I use nhs3152's SPI interface?

998 次查看
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 回复数

853 次查看
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 项奖励

853 次查看
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 项奖励

853 次查看
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 项奖励

853 次查看
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 项奖励

853 次查看
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 项奖励