在线时间3060 小时
UID3327992
注册时间2018-4-5
NXP金币11267
TA的每日心情 | 奋斗 14 小时前 |
---|
签到天数: 2400 天 连续签到: 109 天 [LV.Master]伴坛终老
版主
  
- 积分
- 22295
- 最后登录
- 2025-8-18
|
本帖最后由 流水源 于 2022-10-30 12:50 编辑
上一篇搞定了下载算法,下面就测试一下下载算法是否有效。
打开之前的例子工程。先添加一个图片bin数据到程序。这是个图片数据,等下就测试将这个数据下载到spiflash中,然后程序读flash数据,将图片显示到llcd屏上。
然后修改链接文件,添加flash映射的地址,这个地址在上篇下载算法里面设置的,地址在0X30000000位置,16MByte空间。实际存储到flash的地址要减去这个0X30000000偏移量,因为flash存储地址从0开始的。
然后添加测试代码并编译下程序。
可以看到map文件定位数据正好在0x30000000地址开始处了。
下一步设置添加下载算法了。
下载效果,可以看到左下角在下载数据了。
运行程序。显示图片了,240*240.
main
- uint8_t bmpBuffer[240*4];
- extern const unsigned char gImage_1[];
- extern const uint16_t c_bmp_clock_RGB565[];
- /*!
- * @brief Main function
- */
- int main(void)
- {
- uint32_t addr;
- BOARD_InitBootClocks();
- SysTick_Config(SystemCoreClock / 1000U);
- init_cycle_counter(true);
-
- BOARD_InitBootPins();
- drv_gpio_init();
- BOARD_InitDebugConsole();
-
- drv_spi_gpio_init();
- drv_i2c_gpio_init();
-
- DbgConsole_Printf("LPC845 Mooncake Board Test!\r\n");
-
- spilcd_init();
- WS2812_Init();
- W25QXX_Init();
-
- __cycleof__("lcd_fresh_time(n/30000=X ms):")
- {
- spilcd_fill(0,0,240,240,LCD_RED);
- }
- delay_ms(100);
- __cycleof__("lcd_fresh_time(n/30000=X ms):")
- {
- spilcd_fill(0,0,240,240,LCD_GREEN);
- }
- delay_ms(100);
- __cycleof__("lcd_fresh_time(n/30000=X ms):")
- {
- spilcd_fill(0,0,240,240,LCD_BLUE);
- }
- delay_ms(100);
-
- DbgConsole_Printf("0x%0X \r\n",c_bmp_clock_RGB565);
- addr=c_bmp_clock_RGB565;
- __cycleof__("show 240*240 picture time:")
- {
- for (int i = 0; i < 120; i++)//(c_bmp_clock_RGB565-0x30000000)
- {
- W25QXX_Read((addr & 0x0FFFFFFF )+ i*240*4 ,bmpBuffer,240*4);
- spilcd_draw_bitmap(0,i*2,240,2,bmpBuffer);
- }
- }
- delay_ms(100);
-
- // DbgConsole_Printf("%0X \r\n",gImage_1);
- // addr=gImage_1;
- // __cycleof__("show 40*40 picture time:")
- // {
- // for (int i = 0; i < 4; i++)
- // {
- // W25QXX_Read((addr & 0x0FFFFFFF ) + i*800 ,bmpBuffer,800);
- // spilcd_draw_bitmap(100,100+i*10,40,10,bmpBuffer);
- // }
- // }
- // delay_ms(100);
-
- // for (int i = 0; i < BUFFER_SIZE; i++)
- // {
- // txBuffer[i] = i % 256;
- // rxBuffer[i] = 0U;
- // }
- // DbgConsole_Printf("W25QXX Erase Chip.\r\n");
- // W25QXX_EraseChip();
- // DbgConsole_Printf("W25QXX Read Data.\r\n");
- // W25QXX_Read(0,rxBuffer,64);
- // for (int i = 0; i < BUFFER_SIZE; i++)
- // {
- // DbgConsole_Printf("%02X ",rxBuffer[i]);
- // }
- // DbgConsole_Printf("W25QXX Write Data.\r\n");
- // W25QXX_Write_NoCheck(0,txBuffer,BUFFER_SIZE);
- // DbgConsole_Printf("W25QXX Read Data to Check.\r\n");
- // for (int j = 0; j < BUFFER_SIZE; j++)
- // {
- // W25QXX_Read(0 + j*BUFFER_SIZE,rxBuffer,64);
- // for (int i = 0; i < BUFFER_SIZE; i++)
- // {
- // DbgConsole_Printf("%02X ",rxBuffer[i]);
- // }
- // DbgConsole_Printf("\n");
- // }
-
- rgb_light = 0;
- while(1)
- {
- keyscan_fsm(&pt_key_scan);
-
- // ws2812rgb_clock_fsm(&pt_ws2812_rgb); //效果1
- ws2812rgb_demo_fsm(&pt_ws2812_rgb); //效果2
-
- GPIO_PortToggle(GPIO, 0, 1u << 0); //led灯
- }
- }
复制代码
好了,测试OK。后面再也不用 担心图片字体把LPC845的64Kflash撑爆了。spiflash虽然不能做运行代码区,但是储存各种资源数据还是足够了。
LPC845-MoonCake_test.rar
(16.1 MB, 下载次数: 4, 售价: 10 NXP金币)
|
|