主题中讨论的其他器件:SysConfig
工具与软件:
嗨、团队:
我将通过 CCS 配置新的 闪存、并重新发布以下 AM273x MCU+ SDK:为定制闪存器件 步骤编写闪存驱动程序。 状态向量
步骤4:使用 QSPI 闪存传输示例根据更改测试新的闪存驱动程序
时、我得到如下所示的错误。 在我选择新驱动程序并运行闪存传输示例后、可能会发生此错误
[Cortex_R5_0]错误:Board_flashOpen:98:实例0的闪存打开失败!!
[QSPI 闪存传输测试]正在启动...
[QSPI 闪存传输测试]在第一个块上执行闪存擦除...
[QSPI 闪存传输测试]执行写入读取测试……
错误:qspi_flash_diag_test_compare_buffers:127:QSPI 读取数据不匹配!!
某些测试失败!!
(1)我从 qspi_flash_diag 项目中获得当前闪存信息
[Cortex_R5_0][QSPI 闪存诊断测试]正在启动...
[QSPI 闪存诊断测试]闪存制造商 ID:0xEF
[QSPI 闪存诊断测试]闪存器件 ID:0x9020.
[QSPI 闪存诊断测试]对第一个块执行闪存擦除...
[QSPI 闪存诊断测试]已完成!!!
[QSPI 闪存诊断测试]执行写读测试……
[QSPI 闪存诊断测试]写读测试通过!
[QSPI 闪存诊断测试] SFDP 信息:
==================================
SFDP
==================================
SFDP 主要版本:0x1.
SFDP 次要版本:0x6
此表中的参数标题数:2.
此闪存中附加参数表的类型
--------------------------------------------------------
4字节寻址模式指令表
Flash_Nor 2001开发定义 gFlashNorSpiDeviceDefinites_ ={
. NOR_SPI_CMD_RSTEN = 0x66、
. NOR_SPI_CMD_RSTMEM = 0x99、
. NOR_SPI_CMD_WREN = 0x06、
. NOR_SPI_CMD_WRREG = 0x00、
. NOR_SPI_CMD_BULK_ERASE = 0xC7、
. NOR_SPI_CMD_SECTOR_ERASE_3B = 0x20、
. NOR_SPI_CMD_SECTOR_ERASE_4B = 0x21、
. NOR_SPI_CMD_BLOCK_ERASE_3B = 0xD8、
. NOR_SPI_CMD_BLOCK_ERASE_4B = 0xDC、
. NOR_SPI_CMD_PAGE_PROG_3B = 0x02、
. NOR_SPI_CMD_PAGE_PROG_4B = 0x12、
. NOR_SPI_CMD_RDSR = 0x05
. NOR_SPI_CMD_RDREG = 0x00、
. NOR_SPI_CMD_RDID = 0x9F、
. NOR_SPI_CMD_READ = 0x03、
. NOR_SPI_CMD_888_SDR_READ = 0x00、
. NOR_SPI_CMD_888_DDR_READ = 0x00、
. NOR_SPI_CMD_444_SDR_READ = 0xEB、
. NOR_SPI_CMD_444_DDR_READ = 0x00、
. NOR_SPI_CMD_114_READ = 0x6B、
. NOR_SPI_SR_WIP = 0、
. NOR_SPI_SR_WEL = 0、
. NOR_SPI_RDID_NUM_BYTES = 5、
. NOR_SPI_MANF_ID = 0xEF、
. NOR_SPI_DEVICE_ID = 0x9020、
. NOR_SPI_114_READ_MODE_CLKS = 0、
. NOR_SPI_114_READ_DUMENT_CYCLES = 8、
. NOR_SPI_444_READ_MODE_CLKS = 2、
. NOR_SPI_444_READ_dummy_cycles = 0、
. NOR_SPI_444_READ_dummy_cycles_LC = 0x00、
. NOR_SPI_QUAD_CMD_READ_DUMENT_CYCLES = 0x00、
. NOR_SPI_Octable_read_dummy_cycle = 0、
. NOR_SPI_Octable_read_dummy_cycle_LC = 0x00、
. NOR_SPI_Octable_DDR_RDSR_dummy_cycle = 0、
. NOR_SPI_Octable_DDR_RDREG_ADDR_BYTES = 0、
. NOR_SPI_Octal_DDR_WRREG_ADDR_BYTES = 0、
. NOR_SPI_Octal_DDR_RDVREG_dummy_cycle = 0、
. NOR_SPI_Octal_DDR_RDNVREG_dummy_cycle = 0、
. NOR_SPI_Octable_RDSFDP_dummy_cycle = 0、
. NOR_SPI_Octable_RDSFDP_ADDR_TYPE = 0、
. NOR_SPI_WRR_WRITE_TIMEOUT = 7040、
. NOR_SPI_BULK_ERASE_TIMEOUT = 192000000、
. NOR_SPI_PAGE_PROG_TIMEOUT = 704、
. NOR_SPI_VREG_OFFSET = 0x0、
. NOR_SPI_NVREG_OFFSET = 0x0、
. NOR_SPI_QUAD_MODE_CFG_ADDR = 0x0、
. NOR_SPI_QUAD_MODE_CFG_BIT_LOCATION = 0x0、
. NOR_SPI_DDR_Octal_MODE_CFG_ADDR = 0x0、
. NOR_SPI_DDR_Octal_MODE_CFG_BIT_LOCATION = 0x0、
. NOR_SPI_dummy_cycle_CFG_ADDR = 0x0、
. NOR_SPI_FLASH_SIZE = 67108864、
. NOR_SPI_PAGE_SIZE = 256、
. NOR_SPI_BLOCK_SIZE = 65536、
. NOR_SPI_SECTOR_SIZE = 4096、
.addrByteSupport = 1、
.dtrSupport = 1、
.qeType = 4、
.seq444Enable ={1、0、0、0、1}、
.seq444Disable ={1、0、0、1}、
.oeType = 0、
.cmdExtType = 0、
.byteOrder = 0、
};
所有测试均已通过!!
(2)这是我的新闪存 c 文件(FLASH_NOR_QSPI_DEVICE_W25H512J.c)。 我用(1)的信息修改了它。
#include
Flash_Nor spiDevDefines gFlashNorQspiDeviceDefines_W25H512J ={
. NOR_CMD_RDID = 0x9FU、//
. NOR_CMD_SINGLE_READ = 0x03U、//读取数据
. NOR_CMD_Quad_READ = 0x6CU、//
. NOR_PAGE_PROG = 0x12U、//
. NOR_CMD_RSTEN = 0x66U、//
. NOR_CMD_RST = 0x99U、//
. NOR_RDID_NUM_BYTES = 0x5U、//
. NOR_MANF_ID = 0xEFU、//
. NOR_DEVICE_ID = 0x9020U、//
. NOR_CMD_WREN = 0x06U、//写入使能
. NOR_CMD_WRSR = 0x01U、//
. NOR_CMD_RDSR1 = 0x05U、//
. NOR_CMD_RDSR2 = 0x35U、//
. NOR_CMD_SECTOR_ERASE = 0x21U、//
. NOR_CMD_BLOCK_ERASE = 0xDCU、//
. NOR_CMD_BULK_ERASE = 0xC7U、//片擦除
. NOR_Quad_Read_dummy_cycle = 0U、
. NOR_BULK_ERASE_TIMEOUT = 192000000U、
. NOR_WRR_WRITE_TIMEOUT = 7040U、
. NOR_PAGE_PROG_TIMEOUT = 704U、
. NOR_PAGE_SIZE = 256U、
. NOR_ADDR_NUM_BYTES = 4U、
};
#define FLASH_SIZE (64U * 1024U * 1024U)
#define FLASH_BLOCK_SIZE (64U * 1024U)
#define FLASH_PAGE_SIZE (256U)
#define FLASH_SECTOR_SIZE (4096U)
#define FLASH_NUM_BLOCK (FLASH_SIZE / FLASH_BLOCK_SIZE)
#define FLASH_NUM_PAGES_PER_BLOCK (FLASH_BLOCK_SIZE/FLASH_PAGE_SIZE)
Flash_Attrs gFlashNorQspiAttrs_W25H512J =
{
查询闪存后、.deviceId = 0、/*由 Flash_open 填充*
查询闪存后、.manufacturerId = 0、/*由 Flash_open 填充*/
.driverInstance = 0、/*由 SysConfig 填充*/
.flashSize = flash_size、
.blockCount = FLASH_NUM_BLOCKS、
.blocksize = flash_block_size、
.PageCount = FLASH_NUM_PAGES_PER_BLOCK、
.pagesize = flash_page_size、
SECTORSize = FLASH_SECTOR_SIZE、/*未使用*/
SECTORCount = 0、/*未使用*/
};
您能否帮助我检查我的新驱动程序配置是否正确? 如何解决该问题?
非常感谢
Amy