STM32F429+W25Q256+TouchFGX

一、硬件介绍

硬件使用STM32F429IGT6,外部flash为W25Q256FVEI,屏幕为TFTLCD分辨率为1024*600,SDRAM使用的是W9825G6KH-6I。使用TouchGFX(版本为4.16.1)作为界面,外部falsh存储图片。

二、MXcube配置

1.时钟配置为

2.SDRAM配置为

3. DMA2D配置为

打开中断

4.LTDC配置为

 图层配置

打开中断

5.Free RTOS配置

 6.touchGFX配置

三、touchGFX Designer配置

图片配置

 界面配置,界面包含一个主界面和三个次界面。主界面包含三个按钮,按钮增加和页面跳转功能;分界面包含一个图片和一个返回按钮,返回按钮可以返回主界面。

 

四、软件配置

1.去掉MicroLIB选项和下载校准选项

 2.增加下载算法

 3.增加代码段

五、增加代码

1.在TouchGFXHAL.cpp中增加代码

2.在TouchFGXCongratulation.cpp中增加代码

3.在STM32TouchController.cpp中增加触控代码

 4.SDRAM初始化

void MX_SDRAM_InitEx(void)
{
  __IO uint32_t tmpmrd = 0;
  
	FMC_SDRAM_CommandTypeDef Command;
	
  /* Step 1: Configure a clock configuration enable command */
  Command.CommandMode            = FMC_SDRAM_CMD_CLK_ENABLE;
  Command.CommandTarget          =  FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 1;
  Command.ModeRegisterDefinition = 0;
 
  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command,0X1000);
 
  /* Step 2: Insert 100 us minimum delay */ 
  /* Inserted delay is equal to 1 ms due to systick time base unit (ms) */
  osDelay(1);
    
  /* Step 3: Configure a PALL (precharge all) command */ 
  Command.CommandMode            = FMC_SDRAM_CMD_PALL;
  Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 1;
  Command.ModeRegisterDefinition = 0;
 
  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command, 0X1000);  
  
  /* Step 4: Configure an Auto Refresh command */ 
  Command.CommandMode            = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
  Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 8;
  Command.ModeRegisterDefinition = 0;
 
  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command, 0X1000);
  
  /* Step 5: Program the external memory mode register */
  tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_1          |\
                     SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL   |\
                     SDRAM_MODEREG_CAS_LATENCY_3           |\
                     SDRAM_MODEREG_OPERATING_MODE_STANDARD |\
                     SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;
 
  Command.CommandMode            = FMC_SDRAM_CMD_LOAD_MODE;
  Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 1;
  Command.ModeRegisterDefinition = tmpmrd;
 
  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command, 0X1000);
  
  /* Step 6: Set the refresh rate counter */
  /* Set the device refresh rate */
  HAL_SDRAM_ProgramRefreshRate(&hsdram1, 683); 
}

 5.LTDC初始化

void LTDC_Init(void)
{
    HAL_LTDC_SetWindowPosition(&hltdc,0,0,0);  //设置窗口的位置
    HAL_LTDC_SetWindowSize(&hltdc,1024,600,0);//设置窗口大小 
	
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);//屏幕灯点亮
}

6.LCD线程

void LTCD_Thread(void const * argument)
{
    FT5206_Init();//触摸初始化
    osDelay(100);
    MX_TouchGFX_Process();
    
    while (1) {
        osDelay(10);
    }
}

六、测试结果

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现STM32 USB与W25Q闪存芯片的u盘功能,需要完成以下步骤: 1. 硬件连接:将STM32微控制器与W25Q闪存芯片进行正确的连接。通常,W25Q芯片使用SPI接口与STM32通信,所以需要将SPI接口的引脚进行正确的连接。 2. STM32配置:使用STM32的开发环境,如STM32CubeMX和Keil等,配置STM32的USB和SPI相关的引脚和寄存器。首先,使能STM32的USB外设,并配置为USB设备模式。然后,配置SPI外设的相关寄存器,设置通信速度、位序和数据格式等。 3. 编写代码:使用C语言编写STM32的固件代码,通过STM32的USB外设与主机进行通信。在代码中,需要实现USB设备的初始化、中断处理函数、发送和接收数据的功能。同时,还需要编写与W25Q闪存芯片进行通信的代码,以实现对闪存芯片的读写操作。 4. 实现u盘功能:当STM32与主机建立连接后,根据主机发送的命令,通过USB接口与W25Q闪存芯片进行读写操作。主机可以向STM32发送读取文件列表、读取文件内容、写入文件内容等命令,STM32根据命令执行对应的操作,并通过USB接口与主机进行数据传输。 5. 调试和测试:完成代码的编写后,通过STM32的仿真器或者调试器将代码下载到开发板中进行测试。可以使用主机连接开发板,测试主机与开发板之间的通信是否正常,能否读写文件等。 总结:通过配置STM32的USB和SPI外设,并编写对应的代码,可以实现STM32与W25Q闪存芯片的u盘功能。在此基础上,根据需求可以扩展更多功能,例如支持文件加密、文件夹管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值