研究生
最后登录1970-1-1
在线时间 小时
注册时间2014-6-9
|
STM32H750VB
硬件:使用W25Q128JV和W25Q64JV都试过了, 原理图和PCB图如下图所示,PCB做了等长处理
软件:目前烧录算法可以使用,并且开启校验模式。可以查到尝试ID,可以写读数据。
问题:STM32H750VB 内部128K存boot 外部qspi flash存app程序 。
目前无法跳转app,程序参考大佬的的都不行。运行到跳转字段时的时候晶振就不起振了。
boot main函数
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- MPU_Config();
- CPU_CACHE_Enable();
- /* USER CODE END 1 */
- /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* USER CODE BEGIN Init */
- /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
- /* USER CODE BEGIN SysInit */
- /* USER CODE END SysInit */
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- //HAL_GPIO_WritePin(LOCK_GPIO_GPIO_Port,LOCK_GPIO_Pin,GPIO_PIN_SET);
- MX_USART1_UART_Init();
- // MX_SPI1_Init();
- // MX_SPI2_Init();
- /* USER CODE BEGIN 2 */
- printf("boot ok\r\n");
-
- clock_information();
- //
- MX_QUADSPI_Init();
- W25QXX_Init();
-
- printf("id:%X\r\n",W25QXX_MftrDeviceID());
- QSPI_EnableMemoryMappedMode();
- SCB_DisableICache();
- SCB_DisableDCache();
-
- JumpToApp(); /* 跳转到应用程序 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
复制代码 boot映射代码:测试映射应该也没问题
- uint8_t QSPI_EnableMemoryMappedMode(void)
- {
- QSPI_CommandTypeDef cmd;
- QSPI_MemoryMappedTypeDef mem;
- // Configure the command for the read instruction
- cmd.InstructionMode = QSPI_INSTRUCTION_1_LINE;
- cmd.Instruction = W25X_FastRead;
- cmd.AddressMode = QSPI_ADDRESS_4_LINES;
- cmd.AddressSize = QSPI_ADDRESS_24_BITS;
- cmd.DataMode = QSPI_DATA_4_LINES;
- cmd.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
- cmd.DummyCycles = 8;
- cmd.DdrMode = QSPI_DDR_MODE_DISABLE;
- cmd.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
- cmd.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
- // Configure the memory mapped mode
- mem.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
- mem.TimeOutPeriod = 0;
- if (HAL_QSPI_MemoryMapped(&hqspi, &cmd, &mem) != HAL_OK)
- {
- return 1;
- }
- return 0;
- }
复制代码 boot跳转代码
- void JumpToApp(void)
- {
- uint32_t i=0;
- void (*AppJump)(void); /* 声明一个函数指针 */
- __IO uint32_t AppAddr = 0x90000000; /* APP 地址 0x90000000*/
-
- /* 关闭全局中断 */
- DISABLE_INT();
-
- /* 设置所有时钟到默认状态,使用HSI时钟 */
- HAL_RCC_DeInit();
-
- /* 关闭滴答定时器,复位到默认值 */
- SysTick->CTRL = 0;
- SysTick->LOAD = 0;
- SysTick->VAL = 0;
- /* 关闭所有中断,清除所有中断挂起标志 */
- for (i = 0; i < 8; i++)
- {
- NVIC->ICER[i]=0xFFFFFFFF;
- NVIC->ICPR[i]=0xFFFFFFFF;
- }
- /* 使能全局中断 */
- ENABLE_INT();
- /* 跳转到应用程序,首地址是MSP,地址+4是复位中断服务程序地址 */
- AppJump = (void (*)(void)) (*((uint32_t *) (AppAddr + 4)));
- /* 设置主堆栈指针 */
- __set_MSP(*(uint32_t *)AppAddr);
-
- /* 在RTOS工程,这条语句很重要,设置为特权级模式,使用MSP指针 */
- __set_CONTROL(0);
- /* 跳转到系统BootLoader */
- AppJump();
- /* 跳转成功的话,不会执行到这里,用户可以在这里添加代码 */
- while (1)
- {
- }
- }
复制代码 app main函数
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- SCB->VTOR = QSPI_BASE;
- // __enable_irq();
- SCB_EnableICache();
- SCB_EnableDCache();
-
- /* USER CODE END 1 */
- /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- MPU_Config( );
- HAL_Init();
- /* USER CODE BEGIN Init */
- /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
- /* USER CODE BEGIN SysInit */
- /* USER CODE END SysInit */
- /*Initialize all configured peripherals */
- MX_GPIO_Init();
- HAL_GPIO_WritePin(LOCK_GPIO_GPIO_Port,LOCK_GPIO_Pin,GPIO_PIN_RESET);
- // MX_QUADSPI_Init();
- MX_USART1_UART_Init();
- // MX_SPI1_Init();
- // MX_SPI2_Init();
- /* USER CODE BEGIN 2 */
- printf("APP ok!\r\n");
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
- HAL_GPIO_WritePin(LOCK_GPIO_GPIO_Port,LOCK_GPIO_Pin,GPIO_PIN_SET);
- HAL_Delay(100);
- HAL_GPIO_WritePin(LOCK_GPIO_GPIO_Port,LOCK_GPIO_Pin,GPIO_PIN_RESET);
- HAL_Delay(100);
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
复制代码
APP MDK设置
|
|