Hello,
I am trying to send SERIAL data from OpneMV H7 to TI 3220 SF launchpad.
I have this simple code in OpenMV, where I an sending the number 5 as a test
from pyb import SPI
spi = SPI(2, SPI.MASTER, baudrate=115200, polarity=1, phase=0, crc=0x7)
spi.send(b'5')
In CCCT (TI IDE) the code snippet is included below
#define SPI_MSG_LENGTH (30)
#define SLAVE_MSG ("Hello from slave, msg#: ")
#define MAX_LOOP (10)
unsigned char slaveRxBuffer[SPI_MSG_LENGTH];
unsigned char slaveTxBuffer[SPI_MSG_LENGTH];
/* Semaphore to block slave until transfer is complete */
sem_t slaveSem;
static Display_Handle display;
void transferCompleteFxn(SPI_Handle handle, SPI_Transaction *transaction)
{
sem_post(&slaveSem);
}
LOG_INFO("Starting SPI Code\r\n");
// BEGIN SPI SLAVE CODE
SPI_Handle slaveSpi;
SPI_Params spiParams;
SPI_Transaction transaction;
uint32_t i;
bool transferOK;
int32_t status;
GPIO_setConfig(CONFIG_SPI_SLAVE_READY, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);
GPIO_setConfig(CONFIG_SPI_MASTER_READY, GPIO_CFG_INPUT);
LOG_INFO("setconfig done\r\n");
GPIO_write(CONFIG_SPI_SLAVE_READY, 1);
while (GPIO_read(CONFIG_SPI_MASTER_READY) == 0) {}
status = sem_init(&slaveSem, 0, 0);
if (status != 0) {
//Display_printf(display, 0, 0, "Error creating slaveSem\n");
LOG_INFO("Error creating slaveSem\r\n");
while(1);
}
while (GPIO_read(CONFIG_SPI_MASTER_READY)) {}
LOG_INFO("SPI is ready to receive messages\r\n");
SPI_Params_init(&spiParams);
spiParams.frameFormat = SPI_POL0_PHA1;
spiParams.mode = SPI_SLAVE;
spiParams.transferCallbackFxn = transferCompleteFxn;
spiParams.transferMode = SPI_MODE_CALLBACK;
slaveSpi = SPI_open(CONFIG_SPI_SLAVE, &spiParams);
if (slaveSpi == NULL) {
//Display_printf(display, 0, 0, "Error initializing slave SPI\n");
LOG_INFO("Error initializing slave SPI\r\n")
while (1);
}
else {
//Display_printf(display, 0, 0, "Slave SPI initialized\n");
LOG_INFO("Slave SPI initialized\r\n")
}
/* Copy message to transmit buffer */
strncpy((char *) slaveTxBuffer, SLAVE_MSG, SPI_MSG_LENGTH);
The challenge I am facing is that the code does not come out of this loop
while (GPIO_read(CONFIG_SPI_MASTER_READY)) {}
The statement below does not get executed:
LOG_INFO("SPI is ready to receive messages\r\n");
This seem to imply that the serial data is not coming from OpenMV to TI board.
The pins that are connected in between two boards are:
OpenMV:
P0 (MOSI)
P1 (MISO)
P2 (SLCK)
P3 (SS)
TI board
MOSI (P7)
MISO (P6)
CLK (P5)
SS (P8)
Thanks,