打印
[活动专区]

【AutoChips MCU评测报告】+初识AutoChips MCU及测试

[复制链接]
952|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1.开箱上电
乘此次活动的机会,首次申请到AC7811-MINI开发板,它为了解其性能和掌握其开发提供了硬件方面的支持。AC7811-MINI开发板就整体来讲是一个基于AC7811的最小系统,基本上将全部的引脚资源全与排针的方式提供给了用户,这为用户免除了手工焊制芯片的麻烦。此外,在构建专业功能时还可以将其作为一个核心模块来配合功能板进行使用。
接到开发板的首要工作就是上电看一下出厂的DEMO演示效果,在用USB线连好电脑和开发板后,除板上的电源指示灯点亮外,就是用户LED再闪烁着,如图1所示。
1 上电效果

2.构建开发环境
就个人使用的习惯讲,本人是使用KEIL作为开发工具,所用的版本为V5.23
在安装KEIL软件后,还需下载安装AutoChips.AC781x_DFP.1.0.8以获得对开发板的芯片支持,如图2所示。
2 获得芯片支持
为便于下载测试,本人是使用串口通信来进行程序的下载。测试的程序可使用厂家提供的demo示例,为便于观察效果可见循环语句注释掉,则用户LED会持续点亮,经编译其界面如图3所示。

3 完成编译
在程序下载方面,本人使用的程序通讯。在下载前需安装ATC_MCU_ISPTool V3.1,其界面如图4所示。

4 下载界面
在下载时,需用导线来连接BOOTVCC引脚,下载后再断开连接重新上电方可见到演示效果。

5 完成下载
经验证下载功能有效、正常,为后续的例程验证和开发提供了有力地支持。
从使用角度看,在下载方面还应稍加改进,例如在ISP下载时,需要将BOOTVCC进行短接,但两者间却隔着一个引脚,不便用短接子来实现。还有就是通讯接口在下载时若使用自己配备的USBTTL通讯模块,会因引脚的间距过小而不便连接。
3.例程测试
AC781x范例代码中,提供了较为丰富的例程资源,通过它可以学习编程技巧及拓展应用功能等,对它的验证具有较重要的作用。
I2C_OLED 屏幕测试
OLED例程提供了一个对I2C接口的OLED屏的驱动示例,它主要是使用I2C 2这个接口来驱动OLED屏。

其中:OLED屏的SDA连接PC6OLED屏的SCL连接PC5

OLED屏的演示主程序如下:
int main(void)
{
InitDelay();
InitDebug();

OLED_Init();
OLED_Clear();

while(1)
{
OLED_Clear();
OLED_ShowString(0, 0, "OLED Demo", 8);
OLED_DrawBMP(64, 4, 128, 8, g_atc**BMP);
mdelay(8000);
mdelay(8000);
mdelay(8000);
mdelay(8000);

}
}

其演示的效果如图6所示。

6 OLED屏演示效果

RTC测试:
RTC例程是一个RTC示例,它主要是以OLED屏和串行通讯为显示工具。
其中:OLED屏的SDA连接PC6OLED屏的SCL连接PC5
其主程序如下:
int main(void)
{
    uint32_t tmpMod = 99;
    uint32_t tmpPrescalerValue = 0x752ff;             //480000*100/48000000 = 1s
    RTC_ConfigType RTCConfig = {0};

    InitDelay();
    InitDebug();

    OLED_Init();                                       //initial OLED
    OLED_Clear();                                      // Initialize debug UART 1

    printf("\r\nAC7811: RTC_Demo\r\n");

    RTCConfig.clockSource = 0;                         //clk source :48MHz
    RTCConfig.moduloValue = tmpMod;
    RTCConfig.interruptEn = ENABLE;
    RTCConfig.prescalerValue = tmpPrescalerValue;        //time = (pre+1)*(mod+1)/clk
    RTCConfig.RTCOut = ENABLE;
    RTC_SetEventCallback(RTCCallBackFunc);
    RTC_Initialize(&RTCConfig);

    OLED_ShowString(0, 0, "RTC Demo", 8);
    OLED_DrawBMP(64, 4, 128, 8, g_atc**BMP);
    OLED_ShowString(0, 2, "current time is:", 8);
    while(1);
}

其中通信串口的显示如图9所示,它是通过RTC每秒产生一次中断来进行串口输出和OLED屏更新,OLED屏更新RTC计时值的效果如图10所示。
6  RTC演示效果
RTC中断处理函数为:
int32_t RTCCallBackFunc(uint32_t wparam, uint32_t lparam )
{
    static uint32_t s_clkCounter = 1;
    RTC_ClockDisplay(s_clkCounter);
    printf("RTC CallBack Function,counter:%d\r\n", s_clkCounter++);

    return 0;
}

10  RTC演示效果
OLED屏的显示函数为:
void RTC_ClockDisplay(uint32_t counter)
{
    uint32_t tempHour = 0, tempMin = 0, tempSec = 0;
    tempSec = counter % 60;
    tempMin = (counter / 60) % 60;
    tempHour = (counter / 3600) % 60;

    OLED_ShowChar(0, 3, tempHour / 10 + '0', 8);
    OLED_ShowChar(8, 3, tempHour % 10 + '0', 8);
    OLED_ShowString(16, 3, ":", 8);
    OLED_ShowChar(24, 3, tempMin / 10 + '0', 8);
    OLED_ShowChar(32, 3, tempMin % 10 + '0', 8);
    OLED_ShowString(40, 3, ":", 8);
    OLED_ShowChar(48, 3, tempSec / 10 + '0', 8);
    OLED_ShowChar(56, 3, tempSec % 10 + '0', 8);
}


使用特权

评论回复

相关帖子

沙发
caizhiwei| | 2020-5-31 11:22 | 只看该作者
感谢分享

使用特权

评论回复
板凳
marginer| | 2020-6-1 11:15 | 只看该作者
写得非常好!!!

使用特权

评论回复
地板
jinglixixi|  楼主 | 2020-6-3 09:56 | 只看该作者
marginer 发表于 2020-6-1 11:15
写得非常好!!!

感谢支持!

使用特权

评论回复
5
jinglixixi|  楼主 | 2020-6-3 09:56 | 只看该作者

多谢支持!

使用特权

评论回复
6
木木guainv| | 2020-6-6 15:56 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
磨砂| | 2020-6-6 15:56 | 只看该作者
代码非常不错

使用特权

评论回复
8
晓伍| | 2020-6-6 15:56 | 只看该作者
测试内容非常详细

使用特权

评论回复
9
八层楼| | 2020-6-6 15:57 | 只看该作者
楼主辛苦了

使用特权

评论回复
10
观海| | 2020-6-6 15:57 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
11
jinglixixi|  楼主 | 2020-6-6 21:03 | 只看该作者
感谢各位的支持!!!

使用特权

评论回复
12
TechHolder| | 2020-6-8 08:20 | 只看该作者
棒棒棒

使用特权

评论回复
13
jinglixixi|  楼主 | 2020-6-11 08:36 | 只看该作者
HMWY1805 发表于 2020-6-9 00:50
好给力,我都差点要学会了。

祝你收获多多!!!

使用特权

评论回复
14
jinglixixi|  楼主 | 2020-6-11 08:37 | 只看该作者

感谢鼓励与支持!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

464

主题

2783

帖子

38

粉丝