l63t89 发表于 2025-8-28 13:03

8 位转 16 位的配置要点

同一 SPI 口先驱动 8 位的 ADC,再驱动 16 位的 DAC,直接改spi_init_struct.frame_size=SPI_FRAMESIZE_16BIT后,DAC 无响应。需先禁用 SPI,改帧格式后重新使能,同时 DR 操作从uint8_t指针改为uint16_t指针,数据传输恢复正常。

磨砂 发表于 2025-9-1 13:39

必须先禁用SPI外设,完成帧格式修改后再重新使能SPI

晓伍 发表于 2025-9-1 15:56

SPI控制器的内部状态机需要在配置变更前复位才能正确识别新的数据宽度

八层楼 发表于 2025-9-1 18:09

对应的数据传输缓冲区需从uint8_t*改为uint16_t*,确保每次读写操作按16位对齐

观海 发表于 2025-9-1 20:27

对于高速场景下的DAC,错误的时序可能导致数据错位或建立时间不足

guanjiaer 发表于 2025-9-1 20:27

先拉低CS_ADC启动AD转换并读取结果,完成后再拉低CS_DAC发送DA数值

heimaojingzhang 发表于 2025-9-2 11:06

若ADC仅提供8位有效数据,向16位寄存器写入时需在高8位补零

keaibukelian 发表于 2025-9-2 13:19

若MCU支持DMA,可分别为ADC和DAC配置独立的描述符链表,由硬件自动完成内存到外设的数据搬运,减少CPU干预并提高吞吐量

paotangsan 发表于 2025-9-2 15:42

将ADC转换完成中断设为高优先级,确保及时响应新样本;DAC更新中断设为低优先级,避免阻塞关键任务

renzheshengui 发表于 2025-9-2 18:06

CS信号的脉冲宽度是否符合器件手册最小要求

wowu 发表于 2025-9-2 20:28

不活跃期间关闭SPI外设电源域,仅在需要通信时唤醒,适用于电池供电系统
页: [1]
查看完整版本: 8 位转 16 位的配置要点