3. 例程说明

3.1. 使用例程

下载开发板资料,1-程序源码_使用手册 文件夹,解压 ebf_hpm6750_code 。

打开例程后先调整Options的调试配置:如果使用DAP,根据 2.4章节 3.CMSIS-DAP 调试配置 小节 说明,修改OpenOCD组件实际绝对路径与 cmsis_dap.cfg ;如果使用J-Link,根据第一章说明设置切换JLINK即可。

3.2. 例程介绍

例程为生成hpm6750evkmini或hpm6750ev2官方开发板同名例程并本地化后修改适配。

各例程中的borad.c/h、pinmux.c/h 有当前例程用不上或者引脚不一致的部分,请根据例程实际注释、修改的内容查看,取需要的部分即可。

生成其他例程进行适配时,可先文本编辑 xxx.emProject 工程文件,修改:link_symbol_definitions=”_flash_size=32M;_extram_size=32M; 与sdram例程修改部分。

以下举例例程的主要适配修改。

  1. hello_world

运行后打印测试信息,无特别改动。改例程本地化后保留了原本大部分文件,其他例程已删除用不上的。

  1. drivers/gpio

运行后开发板底板三个绿灯闪烁,闪烁完后按三个KEY分别对应翻转三个灯。

gpio配置可参考使用官方引脚配置工具,见第四章介绍。

  1. drivers/femc/sdram

运行后打印sdram测试过程。

修改 board.h BOARD_SDRAM_SIZE 宏对应实际核心板 (32 * SIZE_1MB) 。

修改 board.h BOARD_SDRAM_PORT_SIZE 宏对应实际核心板 FEMC_SDRAM_PORT_SIZE_16_BITS 。

修改 pinmux.c init_sdram_pins 函数补充一句 : HPM_IOC->PAD[IOC_PAD_PC22].FUNC_CTL = IOC_PC22_FUNC_CTL_FEMC_A_12;

可将 init_sdram_pins 函数内容复制给其他工程。

  1. drivers/sdxc/sd_fatfs

开发板插入TF卡,运行后根据打印提示发送测试项目。

修改board.h BOARD_APP_SDCARD_SUPPORT_1V8 宏为(0),修改board.h BOARD_APP_SDCARD_SUPPORT_VOLTAGE_SWITCH 宏为(0)。

  1. lwip/lwip_tcpecho_multi_ports_freertos

将开发板双网口同时接入路由器,运行打印显示网线接入后等待DHCP分配IP,IP分配完成后可用网络调试助手作为client连接开发板。TCP服务端0端口: 5001,TCP服务端1端口: 5002。

(SDK1.5~1.6)原例程本地化后需要将 sdk_env-xxx\hpm_sdk\samples\lwip\common 、sdk_env-xxx\hpm_sdk\samples\lwip\ports 文件夹内容手动复制一次,并在工程里面重新添加文件。

例程修改为使用两组RMII和LAN8720 PHY,搜索程序中附带了“//EBF_HPM6750”注释句的部分。

编辑lwip_tcpecho_multi_ports_freertos_example.emProject工程文件,删除默认的__USE_RTL8211、__USE_RTL8201、LWIP_DHCP定义, 工程Options ——> Preprocessor ——> Preprocessor Definitions 添加 __USE_LAN8720, lwipopts.h 设置 LWIP_DHCP 宏值。

  1. drivers/lcdc

默认使用5寸屏幕演示图形,lcd使用引脚与官方例程一致。

编辑lcdc_example.emProject工程文件,删除默认的 CONFIG_PANEL_RGB_TM070RDH13 定义, 工程Options ——> Preprocessor ——> Preprocessor Definitions 添加 CONFIG_PANEL_RGB_EBF_5INCH, hpm_panel.c panel_list[]添加一份自定义屏幕 panel_ebf_5inch, 参考tm070rdh13.c添加一份自定义 ebf_5inch.c,修改对应适配实际屏幕的像素时钟、时序。

按上面同样方式适配7寸屏幕,如果使用7寸屏,修改CONFIG_PANEL_RGB_EBF_5INCH为CONFIG_PANEL_RGB_EBF_7INCH即可。

  1. drivers/uart/uart_irq

从调试串口UART0和另一组串口测试基础的收发中断。

UART0默认使用FIFO,接收够阈值字节后主动触发uart_intr_tx_slot_avail中断标志,在下次中断的对应标志处理里回发。

另一组串口参考例程UART0过程编写,修改 MODULE_XXX 宏对应实际测试串口组,module_uart_init 内修改实际用脚初始化,默认使用板载连接了TTL转232部分的UART7,默认不开启FIFO,收一字节回发一字节。

  1. drivers/cam_dvp

使用野火5寸RGB屏与ov5640摄像头,成功运行代码后,可在屏幕上显示摄像头画面。

修改board.h BOARD_CAM_I2C_BASE等摄像头相关宏定义,对应开发板原理图修改为使用I2C3,添加RST和PWDN脚的宏定义,在board.c 修改board_init_i2c函数注释掉不使用的部分。

在pinmux.c init_cam_pins函数对应添加RST和PWDN脚的初始化。

在cam_dvp.c init_camera_device函数添加camera_context.write_rst和camera_context.write_pwdn的赋值,并对应添加函数定义。

相关修改具体搜索程序里附带”//EBF”注释句部分。

参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。

  1. audio_codec/lvgl_audio_player

使用野火5寸RGB屏,在根目录存储wav、mp3格式歌曲的MicroSD卡插入到开发板卡槽中,使用3.5mm双头音频线,音频输出从开发板绿色音频输出口和喇叭座子播放。

在board.h 修改WM8960相关宏配置,使用I2C3。

在audio_codec_common.c init_i2s_playback函数里修改调用i2s_get_default_transfer_config函数。

在hpm_wm8960.c 修改寄存器配置WM8960_IFACE1 FORMAT[1:0]为左对齐,对应i2s_get_default_transfer_config函数设置的transfer->protocol = I2S_PROTOCOL_MSB_JUSTIFIED。

参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。触摸修改部分在hpm_gt9xx.h,切换I2C地址。

相关修改具体搜索程序里附带”//EBF”注释句部分。

如遇到音频播放没有声音,请检查绿色音频输出口或喇叭座子接入是否正常或重启开发板。

  1. lvgl/baremetal

使用野火5寸RGB屏,显示LVGL的官方demo在裸机情况下的运行效果。

可旋转屏幕显示,LVGL的屏幕旋转功能属于软件旋转,对于CPU的开销比较大,在hpm_lvgl.c 修改hpm_lvgl_display_init初始化函数,添加旋转角度的初始化,修改hpm_lvgl_display_flush_cb回调函数,添加显示图片旋转部分,这些由宏LV_DISPLAY_ROTATION_EBF控制

在lv_display.c.h 添加lv_display_rotate_area函数的定义和声明。

参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。触摸修改部分在hpm_gt9xx.h,切换I2C地址。

相关修改具体搜索程序里附带”//EBF”注释句部分。

CONFIG_PANEL_RGB_EBF_5INCH或CONFIG_PANEL_RGB_EBF_7INCH 用于控制使用5寸屏或7寸屏

LV_USE_HPM_PDMA_FLUSH、LV_USE_HPM_PDMA_WAIT_VSYNC、LV_DISPLAY_ROTATION_EBF用于控制开启旋转屏幕

例程默认使用5寸屏,不旋转屏幕。若使用7寸屏和开启旋转屏幕可参考下图,用户按实际需要对应开启宏使用即可

conncet
  1. touch_panel

使用野火5寸RGB屏,正确运行后,触摸屏幕,串口终端会打印输出触摸点的坐标,软件自带的串口工具使用方法请参考1.6. 运行调试

conncet

参考drivers/lcdc例程介绍,添加通过修改宏切换5寸或7寸RGB屏。触摸修改部分在hpm_gt9xx.h,切换I2C地址。

本例程未进行显示屏幕,只打印触摸坐标,屏幕为初始化后默认情况,可能存在白条或全白屏或全黑屏,均为正常显示,具体看串口打印数据

若串口数据不能打印刷新,可尝试点击断开串口连接,再重打开连接,或复位开发板

  1. 更多例程补充中……

3.3. 构建类型简介

使用命令或者GUI工具生成工程时有各个Build Type参数。

conncet

对应在工程里面为使用了不同的链接脚本。

conncet

例如,使用ram类型构建,只读数据与可读写数据都分配在芯片内部ram区域,调试时所有数据都导入在ram后执行,这样导入速度快,前提是程序与数据尺寸小; 使用flash_xip类型构建,只读数据分配在flash区域,可读写数据分配在内部ram区域,调试时相当于将程序导入到了flash存储后执行; 使用flash_sdram_xip类型构建,只读数据分配在flash区域,各种可读写数据根据其特点和需求分配在内部ram或者外部sdram区域。

以上为简略描述,具体内容请文本查看对应icf文件,大部分工程可以在生成后切换icf文件进行构建。