您好!
我正在尝试将串行数据从 OpneMV H7发送到 TI 3220 SF Launchpad。
我在 OpenMV 中有这个简单的代码、我在其中发送数字5作为测试
从 pyb 导入 SPI
SPI = SPI (2、SPI.master、波特率= 115200、极性= 1、相位= 0、 CRC=0x7)
spi.send(b'5')
在 CCCT (TI IDE)中、代码片段包括如下
#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];
/*信号量阻止从器件直到传输完成*/
SEM_t slaveSem;
静态 Display_Handle 显示;
空 transferCompleteFxn (SPI_Handle handle、SPI_Transaction *事务)
{
SEM_post (slaveSem);
}
log_info ("正在启动 SPI 代码\r\n);
//开始 SPI 从器件代码
SPI_Handle slaveSpi;
SPI_Params spiParams;
SPI_Transaction 事务;
uint32_t 一;
布尔 转让;
内部32_t 状态;
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){}
状态= SEM_INIT (&slaveSem、0、0);
if (status!= 0){
//Display_printf (display、0、0、"Error creating slaveSem\n");
log_info ("创建 slaveSem\r\n"时出错);
while (1);
}
while (GPIO_Read (CONFIG_SPI_MASTER_READY)){}
log_info ("SPI 已准备好接收消息\r\n);
SPI_Params_init (&spiParams);
spiParams.frameFormat = SPI_POL0_PHA1;
spiParams.mode = SPI_SLAVE;
spiParams.transferCallbackFxn = transferCompleteFxn;
spiParams.transferMode = SPI_MODE_CALLACK;
slaveSpi = SPI_open (CONFIG_SPI_SLAVE、&spiParams);
if (slaveSpi == NULL){
//Display_printf (display、0、0、"初始化从器件 SPI\n"时出错);
LOG_INFO ("初始化从属 SPI\r\n 时出错")
while (1);
}
否则{
//Display_printf (display、0、0、"从器件 SPI 已初始化\n");
log_info ("已初始化从属 SPI \r\n ")
}
/*将消息复制到发送缓冲区*/
strncpy ((char *) slaveTxBuffer、SLAVE_MSG、SPI_MSG_LENGTH);
我所面临的挑战是代码不会从这个循环中产生
while (GPIO_Read (CONFIG_SPI_MASTER_READY)){}
下面的语句不会执行:
log_info ("SPI 已准备好接收消息\r\n);
这似乎意味着串行数据不是从 OpenMV 传输到 TI 电路板。
两个电路板之间连接的引脚为:
OpenMV:
P0 (MOSI)
P1 (MISO)
P2 (插槽)
P3 (SS)
TI 电路板
MOSI (P7)
MISO (P6)
CLK (P5)
SS (P8)
谢谢、