This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我尝试在与 IMU 的连接中使用 SPIA、但在使用 SPI-Write 函数发送消息时没有 CS 信号。
我的 SPI 配置在 hal.c 中如下(我使用的是 motorware):
对于引脚配置:
// SPI SDI 至 IMU
GPIO_setMode (obj->gpioHandle、GPIO_Number_16、GPIO_16_Mode_SPISIMOA);
// SPI SDO 到 IMU
GPIO_setMode (obj->gpioHandle、GPIO_Number_17、GPIO_17_Mode_SPISOMIA);
// SPI SCLK 到 IMU
GPIO_setMode (obj->gpioHandle、GPIO_Number_56、GPIO_56_Mode_SPICLKA);
//将 SPI /SCS 更改为 IMU
GPIO_setMode (obj->gpioHandle、GPIO_Number_19、GPIO_19_Mode_SPISTEA_not);
对于 SPI 配置:
void HAL_setupSpiA (HAL_Handle handle)
{// Louis S 于2021年5月25日完成更新、以配置 SPI A 进行 IMU 控制
// IMU 是 LSM6DSM
HAL_Obj * obj =(HAL_Obj *)句柄;
//开始重置 SPI
spi_reset (obj->spiAHandle);
SPI_setMode (obj->spiAmHandle、SPI_Mode_Master);
SPI_setCharLength (obj->spiAmHandle、SPI_CharLength _16_Bits);
SPI_setClkPhase (obj->spiAHandle、SPI_ClkPhase_Normal);
SPI_setClkPolarity (obj->spiAHandle、SPI_ClkPolarity_OutputFallingEdge_InputRisingEdge);
spi_setBaudRate (obj->spiAHandle、spi_bauddrate_1_MBaud);
SPI_setTriWire (obj->spiAmHandle、SPI_TriWire_normalFourWire);
spi_enableTx (obj->spiAHandle);
SPI_enableTxFifoEnh (obj->spiAHandle);
spi_enableTxFifo (obj->spiAHandle);
spi_setTxDelay (obj->spiAHandle、0);
SPI_clearTxFifoInt(obj->spiAHandle);
spi_enableChannels (obj->spiAHandle);
SPI_enableRxFifo (obj->spiAHandle);
SPI_setSuspend (obj->spiAHandle、SPI_TxSuspend_free);
spi_enable (obj->spiAHandle);
返回;
}// HAL_setupSpiA()函数结束
我在主循环中使用 SPI 写入函数、仅在使用以下代码连接到 IMU 之前测试信号:
spi_write (handle->spiAHandle、data_TO_SEND);
//发送虚拟消息
spi_write (handle->spiAHandle、0);
您能帮我获取 CS 信号吗?
此致
路易
您好!
您是否能够在 SIMO 和 SOMI 线路上查看数据?
此致、
Veena
您好、Veena、
是的、我是。
我在发送消息时看到 SIMO 线和时钟、但没有反馈、因为 CS 始终处于高电平。
当我在设置中注释 TxFifo 行时、它只是保存了游戏。
你能给我解释一下吗?
此致
Louis Schmerber
您好、Louis、
很抱歉耽误你的回答。
您的意思是、通过注释掉 FIFO 配置、CS 引脚按预期工作吗? 启用 FIFO 后、CS 将保持活动状态、直到发送完 FIFO 中的所有数据。
您能否检查 GPIO19针对 STE 选项配置的引脚多路复用寄存器? 我看到您已经使用函数 GPIO_setMode 执行了这一操作。 这只是为了确保 寄存器 不会损坏。
此致、
Veena