您好!
我一直在尝试使用 SPI 使用 STM32f07从 ADS7961读取值、但我只能在微控制器的 SPI 接收寄存器上读取垃圾值。
这可能是因为我在 SPI 上发送数据时错误地打包数据。
我正在尝试从第二个通道读取启动器的数据、从而发送0x1100、即手动模式和第二个通道的地址。
黄色的是时钟、蓝色的是微控制器输出(MOSI)(数据采集是第3个帧)
下面是上述帧的响应
黄色是时钟、蓝色是 ADS 输出(MISO) (数据采集是第3个帧)
您可以看到、接收到的数据应包含通道编号2 (根据发送的配置)、但它不会按预期工作。
我认为传输的帧是正确的、代码也在下面提到。 但我错过了一些东西。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void ManualModeTest () { uint8_t channel = 2; uint8_t dataTx[2]={0}、dataTxSend[2]={0}、dataRx[2]={0}; uint16_t dataTx = TransPack (channel); memcpy (dataTx、tempDataTx)、tempfliveTx;tempDatatpsizeTx dataTxSend、2); ADS_TransmitReceiveFrame (dataTxSend、dataRx、2、 HAL_MAX_DELAY);//dataRx 是接收到的数据、2是大小、HAL_MAX_DELAY 是超时 } void flirr (uint8_t * arr1、uint8_t * arr2、uint8_t size) { for (int i = 0;i <//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SPI 设置如下:
hspi1.instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.direction = SPI_DIRECT_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8位;
hspi1.Init.CLKPolarity = SPI_POLICY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.nss = SPI_NSS_soft;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMDE_ENABLE;
hspi1.Init.CRCCalcirc= SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATAIZE;
hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
任何帮助都是值得赞赏的。
提前感谢。
Pranay

