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.

TDA4VM: 使用TDA4中的R5FMCU控制OSPI读写操作

Part Number: TDA4VM


想要实现的功能:

1、通过访问OSPI的TX-FIFO和RX-FIFO进行收发数据

2、数据通过8线接收或发送

目前配置为使用传统模式,8位地址、数据、指令模式,发送时可以测得CLK以及DQ[0-8],接收没有CLK信号,不能读取值,具体配置寄存器值如下,请看下是什么原因?

CONFIG_REG = 80783981
DEV_INSTR_RD_CONFIG_REG = 133300
DEV_INSTR_WR_CONFIG_REG = 1f033002
DEV_DELAY_REG = a0a0a0a
RD_DATA_CAPTURE_REG = 0
DEV_SIZE_CONFIG_REG = 81002
SRAM_PARTITION_CFG_REG = 3f
IND_AHB_ADDR_TRIGGER_REG = 4000000
DMA_PERIPH_CONFIG_REG = 0
REMAP_ADDR_REG = 0
MODE_BIT_CONFIG_REG = 200
SRAM_FILL_REG = 0
TX_THRESH_REG = 1
RX_THRESH_REG = 1
WRITE_COMPLETION_CTRL_REG = 10005
NO_OF_POLLS_BEF_EXP_REG = ffffffff
IRQ_STATUS_REG = 0
IRQ_MASK_REG = f7fff
LOWER_WR_PROT_REG = 0
UPPER_WR_PROT_REG = 0
WR_PROT_CTRL_REG = 0
INDIRECT_READ_XFER_CTRL_REG = 0
INDIRECT_READ_XFER_WATERMARK_REG = ffffffff
INDIRECT_READ_XFER_START_REG = 0
INDIRECT_READ_XFER_NUM_BYTES_REG = 0
INDIRECT_WRITE_XFER_CTRL_REG = 0
INDIRECT_WRITE_XFER_WATERMARK_REG = ffffffff
INDIRECT_WRITE_XFER_START_REG = 0
INDIRECT_WRITE_XFER_NUM_BYTES_REG = 0
INDIRECT_TRIGGER_ADDR_RANGE_REG = 4
FLASH_COMMAND_CTRL_MEM_REG = 0
FLASH_CMD_CTRL_REG = 0
FLASH_CMD_ADDR_REG = 0
FLASH_RD_DATA_LOWER_REG = 0
FLASH_RD_DATA_UPPER_REG = 0
FLASH_WR_DATA_LOWER_REG = 0
FLASH_WR_DATA_UPPER_REG = 0
POLLING_FLASH_STATUS_REG = 0
PHY_CONFIGURATION_REG = 0
PHY_MASTER_CONTROL_REG = 800000
DLL_OBSERVABLE_LOWER_REG = ff81f9
DLL_OBSERVABLE_UPPER_REG = 0
OPCODE_EXT_LOWER_REG = 13edfa00
OPCODE_EXT_UPPER_REG = 6f90000
MODULE_ID_REG = 3000300

static int32_t xg_ospi_reg_read(OSPI_Handle handle)
{
    OSPI_v0_HwAttrs const *hwAttrs = NULL;
    int32_t                regVal = 0;
	CSL_ospi_flash_cfgRegs *pRegs;
	int32_t val;

    hwAttrs = (OSPI_v0_HwAttrs const *)handle->hwAttrs;
	pRegs = (CSL_ospi_flash_cfgRegs *)(hwAttrs->baseAddr);

	CSL_REG32_WR(hwAttrs->dataAddr, 0x555aa5aa);
	wait_idle(handle);
	//val = CSL_REG32_RD(&pRegs->CONFIG_REG);
	//UART_printf("----------xiongg %s %d: config reg = %x\n",__FUNCTION__,__LINE__, val);
	val = CSL_REG32_RD((char *)hwAttrs->dataAddr);
	UART_printf("----------xiongg %s %d: val = %x\n",__FUNCTION__,__LINE__, val);

	return 0;
}

只有写4字节数据的4个脉冲

读取数据为0