找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 157|回复: 0

联盛德W806_SDK_Demo产品说明文档

[复制链接]

61

主题

5

回帖

195

积分

版主

积分
195
发表于 2024-1-30 15:49:46 | 显示全部楼层 |阅读模式
1 概述
打开SDK工程后,工程app/src目录下添加的是默认的工程文件,用户如果要开发自己的代码,直接在main.c里添加应用代码即可。如果想要使用某个Demo的功能,则需要对工程目录做一些改动,本文档就如何编译Demo文件以及每个Demo实现的功能做简单说明。
2 编译Demo功能
打开工程,工程目录如下图所示,此时目录中添加的是默认的src文件。
(图片加群查看,群号:570560884)
按住ctrl选中main.c、wm_hal_msp.c、wm_it.c三个文件,右键选择remove选项,将三个文件从工程中移除,此时会弹出确认窗口,第一个确认窗口选Yes,移除文件,而第二个弹窗要特别注意,要选择No,否则会直接把源文件删除并且无法恢复。
(图片加群查看,群号:570560884)
选中src,右键选择Add an Existing File…选项,在弹出的窗口中选择所要编译的Demo目录下的main.c、wm_hal_msp.c、wm_it.c三个文件,如果有其他文件,也要一并添加。
(图片加群查看,群号:570560884)
添加后,选中W806_SDK,右键选择Build选项,开始编译,编译完成后下载bin/W806/W806.fls文件到开发板中运行相应的功能。
3 Demo简要说明
Demo目录下都包含了main.c、wm_hal_msp.c、wm_it.c三个文件。
maic.c文件里主要实现了两个接口:
根据要实现的功能赋值初始化参数并调用相应的初始化接口;
如果有用到中断功能,则需要实现相应的回调接口;
wm_hal_msp.c文件里实现三个功能:
打开相应外设的时钟;
相应外设的PIN脚复用功能的初始化;
如果有用到中断功能,则需要设置相应的中断优先级并使能中断;
wm_it.c文件里实现了中断接口并调用中断处理函数。
3.1 adc Demo
实现了每隔1秒采集一次Channel0(PA1)上的输入电压。
3.2 flash
实现了内部flash的读写数据功能,以0x80000为起始地址,分批次写入5000字节数据,也可一次写入全部数据,然后再读出来作比较,判断是否一样。需要注意flash的总大小是1MByte,而用户可用的起始地址等于RUN IMAGE(0x8010400 +  W806.bin大小。

3.3 gpio
以GPIOB0、GPIOB1、GPIOB2做为输出;
GPIOB5做为按键输入,并以下降沿中断的方式检测GPIOB5上的电平变化;
当检测到按键按下时,置位按键标志;
mian函数里检测到按键标志被置位,则翻转GPIOB0、GPIOB1、GPIOB2上的输出电平,并清除按键标志;
此处并未做按键抖动处理,仅用于简单说明中断的使用方法;
3.4 i2c
通过I2C的方式与外部的AT24CXX通信,在同一个地址先写入再读出数据,判断两者是否一致。此处用GPIO模拟的方式,实现了I2C的协议,初始化时只需要设置使用到的PIN脚即可。
3.5 pmu
PMU的节能方式有两种STANDBY和SLEEP,唤醒方式有两种:WAKEUP IO和TIMER。(注意此处用到的TIEMR并非是TIM中的6个定时器,而是PMU专用的一个定时器。IO唤醒只能是WAKEUP脚,其他的GPIO无此功能)
Demo中PMU_Sleep_Tim0()、PMU_Sleep_IO()、PMU_Standby_Tim0()、PMU_Standby_IO()四个接口分别实现了不同的节能模式以及唤醒模式,并且唤醒后都会触发相应的中断。只需要在main函数里PMU_Init()之后调用不同的接口即可。TIMER唤醒设置的是定时5秒。
3.6 pwm
Channel0(GPIOB0)输出100KHz的波形,并以20ms的间隔不断地改变波形的占空比。
3.7 rtc
RTC_Demo()与RTC_Alarm_Demo()实现的基本功能一致,在初始化RTC后,设置起始时间,然后每隔1秒打印一次当前的时间值。唯一的区别在于RTC_Alarm_Demo()在开始计时15秒之后会触发一次定时中断。
3.8 spi
实现了数据的发送与接收。需要用到的4个PIN脚分别为CS(GPIOB4)、CLK(GPIOB2)、MISO(GPIOB3)、MOSI(GPIOB5)。CS使用了软件控制,CLK时钟为2MHZ,将MOSI和MISO两个PIN脚连接起来,实现数据的回环。初始化后,调用HAL_SPI_TransmitReceive()每次收发20K的数据,并判断收到的数据和发送的数据是否一致。
3.9 tft_lcd
实现了两个1.3寸240*240 RGB TFT LCD的显示。两个屏幕的驱动芯片都是ST7789,区别在于一个是8线的并行接口,一个是SPI的串行接口。每个屏幕上实现的功能是一样的,每隔1秒切换显示的图片。
SPI接口的PIN脚定义如下:
LED1(GPIOB25)、LED2(GPIOB26)、FMARK(GPIOB18)、SDA(GPIOB17)、CD(GPIOB16)、SCL(GPIOB15)、CS(GPIOB14)、RESET(GPIOB13)。
8080并口的PIN脚定义如下:
LEDGPIOA5)、RD(GPIOA6)、WR(GPIOA7)、CD(GPIOA8)、CS(GPIOA9)、FMARK(GPIOA12)、RESET(GPIOA13)、DATA7~0(GPIOB7~0)。
3.10 tim
实现了6个定时器定时功能,同时使能了中断功能。6路定时器的定时时间分别为1000ms、1001ms、1002ms、1003ms、1004ms、1005ms。定时时间到会触发中断,在中断回调函数里打印对应的定时器编号。
3.11 touch
实现了6路touch功能,当有touch触摸时,会触发中断,在中断回调函数中,打印出中断标志位,可以看到对应的touch触发。6路touch对应的PIN脚分别为:touch8GPIOB4)、touch9GPIOB5)、touch11GPIOB7)、touch12GPIOB8)、touch13GPIOB9)、touch14GPIOB12)。注意:当用到TOUCH功能时,虽然没有用到touch0GPIOA7),但也必须复用为TOUCH功能,不可以做其他用途。
3.12 uart
实现了uart1的收发数据,uart1的配置波特率为115200,8位数据位,1位停止位,PIN脚为TX(GPIOB6)、RX(GPIOB7)。连接到PC端串口工具后,通过串口工具发送任意数据,W806在收到后会回发给PC端串口工具。在使用HAL_UART_Receive_IT()接口接收数据时,最后一个参数用来设置触发上报数据的的数据长度。设置为0表示,接收任意长度的数据都可以调用回调函数上报数据。设置为大于0的数据表示接收到该长度的数据才会调用回调函数上报数据。
3.13 wwdg
实现了Watchdog功能,定时时间为5s,使能中断,在中断回调函数里会清中断标志。
3.14 freertos
在使用freertos的demo前需要将/include/arch/xt804/csi_config.h文件里的#define CONFIG_KERNEL_NONE 1宏定义注释掉,否则会影响rtos的systick导致os运行异常。demo功能演示了创建两个简单的任务并启动任务调度。内存管理使用的是heap5,所以在调用os的其他接口前需要先初始化内存的区域段作为os系统的堆。如果需要其他的os内存管理方式heap1~heap4,可自行将heap5替换为其他的文件。

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|北京联盛德微电子有限责任公司 ( 京ICP备13053587号-2 )

GMT+8, 2024-4-20 12:44 , Processed in 0.123819 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表