本帖最后由 AINZGOWN 于 2021-7-27 14:43 编辑
Curiosity Nano Adapter是一款用于简化Curiosity Nano开发板与外设连接的硬件拓展平台,例如MikroBus模块和Xplained Pro拓展板。这次的评测报告皆基于该开发板,是一款十分适合设计一些简易项目的开发平台。
这次使用的主控芯片是MicroChipPIC18F57Q43,模块有MikroBUS的OLEDC和Noisy 模块。 软件部分采用MPLABX V5.45,MCC更新后可以安装MikroBUS的驱动库,支持大部分的模块。
想要直接使用模块,首先需要参考NANOAdapter的官方文档,查看引脚配置。
选取我们需要的模块插口,然后查看对应引脚,之后便可在MCC中进行设置。
这次评测中只用到了两个模块,我们分别插在插槽1,3上,对应的引脚设置如图。
这边需要注意,插槽的引脚有时与模块上印刷的引脚不同(例如片选引脚对应使能引脚,名字不同但功能一样,都是高电平触发,不影响使用)。 配置完成后,生成代码,除了常规MCC会生成的文件外,还会额外生成模块对应的驱动,大部分使用的API都在其中。
常用的指令都整合好了,直接调用即可。
因此,主程序设计并不麻烦,程序流程图如下
主要代码如下
void main(void)
{
// Initialize the device
SYSTEM_Initialize();
uint8_t sleep_time = 0; //手动设置看门狗时间
// If using interrupts in PIC18 High/Low Priority Mode you need to enable the Global High and Low Interrupts
// If using interrupts in PIC Mid-Range Compatibility Mode you need to enable the Global Interrupts
// Use the following macros to:
// Enable the Global Interrupts
INTERRUPT_GlobalInterruptEnable();
// Disable the Global Interrupts
//INTERRUPT_GlobalInterruptDisable();
while (1)
{
// Add your application code
while(SWITCH_GetValue()==0)
{
sleep_time = 0;
oledC_DrawRectangle(0,0,95,95,OLEDC_COLOR_WHITE);//清屏
oledC_example(); //初始画面
RESET(); //按键中断,物理复位
oledC_DrawString(10,60,1,1,"Noise detect!",OLEDC_COLOR_GREEN);
//oledC_DrawCircle(47,47,20,OLEDC_COLOR_GREEN);
}
// LED_SetLow();
if(NOISE_IsNoisy()) //噪声检测,判断是否有噪声
{
sleep_time = 0; //手动喂狗
do{//oledC_clearScreen();
oledC_DrawRectangle(0,20,95,75,OLEDC_COLOR_WHITE);//显示噪声界面
//printf("There is a lot of noise!");
oledC_DrawCircle(47,42,13,OLEDC_COLOR_RED);
oledC_DrawString(17,58,2,2,"Noisy!",OLEDC_COLOR_RED);
__delay_ms(10000); //十秒后重新检测
}while(NOISE_IsNoisy());
__delay_ms(2000);
RESET();
}
else
{
__delay_ms(4000);
oledC_DrawRectangle(0,58,95,74,OLEDC_COLOR_WHITE); //手动动画
__delay_ms(2000);
oledC_DrawString(10,60,1,1,"Noise detect!",OLEDC_COLOR_GREEN);
__delay_ms(4000);
sleep_time ++; //看门狗时间增加
if(sleep_time >= 4)
{
sleep_time = 0; //出现看门狗异常,重置单片机
RESET();
}
}
if(sleep_time == 3) //时间==3(即30s)
{
//sleep_time = 0;
oledC_DrawRectangle(0,0,95,95,OLEDC_COLOR_BLACK);//黑屏
Sleep(); //进入低功耗睡眠模式
__nop();
}
}
}
接下来烧录,看实际效果。
在通电后显示开机动画,如下
一段时间没噪声后息屏,进入睡眠模式
检测到噪声后,亮屏,显示有噪声
总体来说,MikroBUS作为一个开源模块,网上能买到许多官方或者第三方的模块(官方一般有MCC库支持),能够很方便的进行调试,适合新手,刚入门单片机,不知道能做些什么的时候,自己选取一些模块来进行一些简单的项目开发,而Microchip的Nano Adapter配合Curiosity Nano开发板以及Mikrobus模块是一套低成本,易于开发的开发平台,能够作为接触PIC或AVR系列单片机的一个入门或者进阶应用。
工程文件附在文末。
|