本帖最后由 iceriver 于 2017-11-29 16:21 编辑
1, 开箱照
图1:开箱照
2, 初试开发板
几个USB接口的电源都连在一起,通过电脑USB接口提供电源 ,此时跳线短接JP1的 4脚和6脚,3脚和5脚,单片机UART0连接ch340芯片,提供串口通讯功能
图2:默认跳线位置
3, 安装ch340驱动
上电后电脑没有自动识别串口,去沁恒的官网下载了ch340的驱动,安装驱动后修改为串口6(如图3所示)。此时通过串口助手可以读到出厂程序上传的数据(图4所示)
图3:串口驱动安装好
图4:默认程序串口通讯截屏
4, 烧写程序实验
烧写有两种方式,一种是通过串口烧写,一种是通过USB烧写。串口烧写时,USB通过P1与电脑相连,跳线短接JP1的第10和第8脚,第9和第7脚,如图5所示;软件设置如图6所示。USB下载时通过P2口与电脑相连,与跳线位置无关,软件设置如图7所示。无论是哪种下载方式,下载是都需要提前按住download按键,上电后再松开才可以实现正常下载
图5:串口烧写跳线位置
图6:串口下载成功
图7:USB下载成功
5, TouchKey实验
本人只了解了自电容相关的知识。CH554共有6路IO可以检测电容变化(如图8所示),自电容方式时每一路引脚单独检测其电容变化,由于开发板的K1,K2两个按键接了两个引脚,本人的实验未对其进行编程,也就是只检测P14(TIN2)和P15(TIN3)这两个通道。
由于只检测P14和P15两个通路电容,故将初始化时宏定义修改如下,且单片机采用查询方式检测按键是否被按下,没有做软件滤波,检测阈值加到50。
P1_DIR_PU &= 0xC0;
#define KEY_FIRST 2
#define KEY_LAST 3
#define KEY_ACT 50
#define INTERRUPT_TouchKey 0
这是我的查询方式检测函数:
void TouchKeyChannelQuery()
{
UINT8 ch = 0;
UINT16 KeyData;
TKEY_CTRL = TKEY_CTRL & 0xF8 | KEY_FIRST +1 ; //从首通道开始采样 TIN2
while((TKEY_CTRL&bTKC_IF) == 0); //bTKC_IF变为1时,本周期采样完成
KeyData = TKEY_DAT&0x07F0; //保持87us,尽快取走
// ch = TKEY_CTRL&7; //获取当前采样通道
if ( KeyData < (KeyFree[KEY_FIRST] - KEY_ACT) ) //如条件满足,代表按键按下
{
KeyBuf= KEY_FIRST ; //可以在此处进行按键动作处理或者置标志通知main进行处理
}
TKEY_CTRL = TKEY_CTRL & 0xF8 | KEY_LAST +1 ; //从首通道开始采样 TIN3
while((TKEY_CTRL&bTKC_IF) == 0); //bTKC_IF变为1时,本周期采样完成
KeyData = TKEY_DAT&0x07F0; //保持87us,尽快取走
// ch = TKEY_CTRL&7; //获取当前采样通道
if ( KeyData < (KeyFree[KEY_LAST] - KEY_ACT) ) //如条件满足,代表按键按下
{
KeyBuf= KEY_LAST ; //可以在此处进行按键动作处理或者置标志通知main进行处理
}
}
图8:CH554触摸电容检测通道
图9:开发板触摸按键连接方式
图10:触摸按键接收截图
此内容由EEWORLD论坛网友iceriver原创,如需转载或用于商业用途需征得作者同意并注明出处