硬件:正点原子北极星 STM32H750 开发环境: cubeMX + HAL 根据原理图配置相关引脚 采用的是:Bank1 with Quad SPI Lines/四线Bank1模式 PB6 ------> QUADSPI_BK1_NCS PF6 ------> QUADSPI_BK1_IO3 PF7 ------> QUADSPI_BK1_IO2 PF8 ------> QUADSPI_BK1_IO0 PF9 ------> QUADSPI_BK1_IO1 PB2 ------> QUADSPI_CLK 现在的问题,编译啥的都通过了,0错误,0警告,下载debug ITM显示打印失败。不知道是哪里的问题,请大佬帮忙看一下。 参考的程序是银杏科技论坛里的技术文档http://www.gkwiki.cn/doku.php?id=icore4t_13 参考网上的程序:main.c如下: int main(void) { /* USER CODE BEGIN 1 */ int i; int temp; unsigned char write_buffer[4096]; unsigned char read_buffer[4096]; /* USER CODE END 1 */ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_QUADSPI_Init(); MX_USART3_UART_Init(); /* USER CODE BEGIN 2 */ BSP_QSPI_Init(); printf("W25Q64 QuadSPI Test....\r\n\r\n"); temp = BSP_QSPI_FLASH_ReadID(); printf("FLASH ID: 0x%X\r\n\r\n",temp); //write for(i = 0;i < 4096;i ++) { write_buffer = i % 256; read_buffer = 0; } BSP_QSPI_Write(write_buffer,0,4096); //写数据 BSP_QSPI_Read(read_buffer,0,4096); //读数据 for(i = 0;i < 4096;i ++) { if(read_buffer != write_buffer) { printf("FLASH ERROR!\r\n");//打印失败 while(1); } } printf("FLASH TEST OK!\r\n");//打印成功 /* USER CODE END 2 */ while(1) { } } |
write_buffer = i % 256 ——》 write_buffer[i] = i % 256;
read_buffer = 0; ——》 read_buffer[i] = 0;
if(read_buffer != write_buffer) ——》 if(read_buffer[i] != write_buffer[i])
评分
查看全部评分
评分
查看全部评分
我把程序改了一下,现在写应该没有问题,就是读不出来。而且我把地址都改成同样的从0开始,长度只是1位,但是写出来还是5个数,读不出来。有截图!请问能帮忙看一下吗?
BSP_QSPI_Write(write_buffer,0,1); //写数据
BSP_QSPI_Read(read_buffer,0,1); //读数据
都是从地址0开始,长度为1.
前面看别人的程序加的宏定义
#define countof(a) (sizeof(a) / sizeof(*(a)))
#define BufferSize (countof(write_buffer)-1)
数组里的内容,可以写并且printf,但是从同样的位置一读就出错了。能帮忙看看是什么原因吗?见截图
BSP_QSPI_Write(write_buffer,0,1); //写数据
BSP_QSPI_Read(read_buffer,0,1); //读数据
都是从地址0开始,长度为1.前面看别人的程序加的宏定义
#define countof(a) (sizeof(a) / sizeof(*(a)))
#define BufferSize (countof(write_buffer)-1)
看一下你的读写函数怎么写的 写操作的时候用的是字符串写的 写函数能不能支持这是一个问题
看你的打印结果 写之前是没有数据的 写之后出现? 说明数据写进去了 但是写错了
主要是看一下 写函数对字符串是怎么操作的 写的是1 2 3 4 5这5个数字还是12345这一个数字 这需要写函数处理的
BSP_QSPI_Write和BSP_QSPI_Read包在了stm32h750b_discovery_qspi.c里,详见截图!