-
gd32h759使用OSPI四线通信获取adc模块的值
该怎么使用OSPI技术,根据flah那种改的感觉不对,读到的值一直与示波器获取的波形对不起来。voidad7380_read(uint8_t*pdata,ospi_parameter_struct*ospi_struct){ospi_regular_cmd_structcmd={0};cmd.operation_type=OSPI_OPTYPE_COMMON_CFG;//间接模式或自动轮询//cmd.instruction=0x00;cmd.ins_size=OSPI_INSTRUCTION_16_BITS;cmd.ins_mode=OSPI_INSTRUCTION_1_LINE;//cmd.ins_mode=OSPI_INSTRUCTION_NONE;//clk就不执行了,不能无指令?cmd.addr_mode=OSPI_ADDRESS_NONE;cmd.alter_bytes_mode=OSPI_ALTERNATE_BYTES_NONE;//无地址,无备用字节cmd.data_mode=OSPI_DATA_4_LINES;//固定cmd.nbdata=8;//读取8字节(4个通道x2字节)|16bit:AD7380每个通道数据是16位(2字节),读取4个通道的数据,共需要8字节(4*2字节)。cmd.dummy_cycles=OSPI_DUMYC_CYCLES_0;//当OSPI工作在2线、4线或者8线模式下从外部存储器中接收数据时,至少设置一个空指令周期,以确保数据的正确接收。cmd.data_dtr_mode=OSPI_DADTR_MODE_DISABLE;ospi_command_config(OSPI0,ospi_struct,&cmd);//进入间接读模式ospi_functional_mode_config(OSPI0,OSPI_INDIRECT_READ);ospi_receive(OSPI0,pdata);//增加延时,确保AD7380完成数据采样rt_kprintf("AD7380reading...\n\r");while(ospi_flag_get(OSPI0,OSPI_FLAG_BUSY));//等待读取完成
2026-01-15 0

问答