本帖最后由 mxkw0514 于 2022-3-18 15:36 编辑
#申请原创# #申请开发板#
收到雅特力AT-START-F425板卡了,该板卡整体PCB布局比较大气,对比了其它系列的开发板亦是如此,虽然说紧凑有紧凑的好处,宽松有宽松的好处,但是我还是比较喜欢宽松大气一点的开发板,找起引脚起来比较容易,不至于把眼睛看瞎。先来看看收到的板卡吧。AT-START-F425板卡的正反面如下所示,板卡上面集成了一个调试仿真器——AT-Link-EZ,虽然它不是带隔离功能的,但是不用额外再买一个,省去了额外接线的好处,如果测评写得好的话,还可以额外收到一个带隔离功能的调试仿真器,岂不快哉。
根据官方手册上显示,片内ADC有18个通道,采样频率能够达到2MSPS,这个性能已经可以适用大部分场合,当然拿他来做示波器的波形采样也不是不可以,只是性能不高而已,根据奈奎斯特定律,这样的示波器最多也就测量1MHz频率的波形吧,毕竟ATF425是超值型单片机吧。ATF425单片机的片内ADC结构框图如下所示,在学习过程中遇到了一点小插曲,实际上ATF425只有16个外部通道, adc_ordinary_channel_set(ADC1, ADC_CHANNEL_17, 1, ADC_SAMPLETIME_239_5)这个函数中使用了ADC17,我一直找ADC17对应的GPIO,并没有发现该复用ADC外部输入的GPIO口,百思不得其解后,终于在RM_AT32F425_CH手册中发现ADC17是内部参考电压,你说搞笑不搞笑。
本次主要使用外部触发ADC采样GPIO口的电压值,使用的例程为exint_trigger_partitioned,该例程实现思路大致是初始化设置、ADC采样程序和外部中断程序编写,初始化设置包括时钟初始化、板卡元器件初始化(LED灯、按键等)、外设初始化(USART、Extern、DMA、ADC、GPIO),ADC采样程序的核心函数为adc1_ordinary_valuetab,外部中断程序功能是GPIO口低电平触发三次后,ADC才开始完成采样,其程序如下所示:void ADC1_IRQHandler(void)
{
if(adc_flag_get(ADC1, ADC_PCCE_FLAG) != RESET)
{
adc_flag_clear(ADC1, ADC_PCCE_FLAG);
if(preempt_trigger_count < 3)
{
adc1_preempt_valuetab[preempt_trigger_count][0] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_1);
adc1_preempt_valuetab[preempt_trigger_count][1] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_2);
adc1_preempt_valuetab[preempt_trigger_count][2] = adc_preempt_conversion_data_get(ADC1, ADC_PREEMPT_CHANNEL_3);
preempt_trigger_count++;
}
}
}
本次例程中的触发有有抢占通道转换和普通通道转换,在抢占通道和普通通道的GPIO口都同时检测到低电平触发后,首先执行抢占通道触发的中断程序,待该中断程序执行完后才开始执行普通通道触发的中断的程序。将AT-START-F425板卡的USART1接头通过TTL转串口连接电脑,下载口通过USB连接电脑下载程序后,例程测试结果如下所示,采样值为0x00都是普通通道的ADC采样值,而0xFFF都是抢占通道的ADC采样值。不过在该例程中,必须要注释掉while(dma_trans_complete_flag == 1),否则程序不往下执行,这是什么原因呢?
可能这是刚出的芯片型号,学习资料不是很多,对于广大学生而言,什么厂家的学习资料多,自然而然就会选择那家厂家的单片机进行学习,久而久之,等毕业以后,也就离不开学生阶段使用熟练的单片机了,这或许是一个普遍现象,ST的芯片在中国推广的这么好应该也有一部分这样的原因吧,STM32的学习资料应该是众多单片机系列中最全的了。
|