你好。
我不熟悉 UCC5870、现在我尝试实施 SPI 通信。 现在、我卡在 CRC 校验处。
无法从 CRCx 寄存器读取 TX CRC 数据。 值每次都会更改。 我的实施中有什么问题。
我写入 TX CRC 寄存器、然后读取它、但每次读取的值都会改变。
2.我已经执行了数据表的示例
tx_data.all = 0xFC00; crc_calc_data.all = SWAP_UI16(tx_data.all); crc = crc8_update( crc, &crc_calc_data.all, 2 ); msg.ptr_tx_data = tx_data.byte; msg.tx_data_size = 2; hal_spi_master_transfer_blocking( &mgl_spi_handle[select], &msg, 100 ); tx_data.all = 0xFA58; crc_calc_data.all = SWAP_UI16(tx_data.all); crc = crc8_update( crc, &crc_calc_data.all, 2 ); msg.ptr_tx_data = tx_data.byte; msg.tx_data_size = 2; hal_spi_master_transfer_blocking( &mgl_spi_handle[select], &msg, 100 ); tx_data.all = 0xFB2A; crc_calc_data.all = SWAP_UI16(tx_data.all); crc = crc8_update( crc, &crc_calc_data.all, 2 ); msg.ptr_tx_data = tx_data.byte; msg.tx_data_size = 2; hal_spi_master_transfer_blocking( &mgl_spi_handle[select], &msg, 100 ); tx_data.all = 0xFC13; crc_calc_data.all = SWAP_UI16(tx_data.all); crc = crc8_update( crc, &crc_calc_data.all, 2 ); msg.ptr_tx_data = tx_data.byte; msg.tx_data_size = 2; hal_spi_master_transfer_blocking( &mgl_spi_handle[select], &msg, 100 ); // check CRC tx_data.all = 0xFA00; crc_calc_data.all = SWAP_UI16(tx_data.all); crc = crc8_update( crc, &crc_calc_data.all, 1 ); tx_data.byte[0] = crc; msg.ptr_tx_data = tx_data.byte; msg.tx_data_size = 2; hal_spi_master_transfer_blocking( &mgl_spi_handle[select], &msg, 100 );
但是、如果我向 CRC2032写入错误的 CRC 值、我将不会获得故障状态
3.如果我写入 SPITEST、我不会获得故障状态。
您是否有任何有关 CRC 用法的代码示例?
感谢你的帮助。
托比亚斯