本文将开始分析ADC0初始化的代码,其他已发布的代码分析可参看以下链接
一、系统时钟初始化R_SYSTEM_ClockInit();
二、定时器初始化R_SYSTEM_TimerInit();
三、UART初始化R_UART_Init();
email:1256153255@qq.com
website for get 瑞萨RH850开发板 and 瑞萨E1仿真器
言归正传开始介绍本文的内容。
4、ADC初始化
Code segment4.1
图4.1
Code segment4.1->Line152
SUSMTD[1:0]=10→异步挂起
CTYP=0:采样精度10bit
CRAC=0:对齐方式→右对齐
DGON=0:自诊断电压电路断开
同步挂起:
在处理较低优先级的SG时发生来自较高优先级的SG请求,则在完成正在进行的信道A/D转换之后执行针对较高优先级的SG的A/D转换。在高优先级SG的处理完成之后,恢复被暂停的低优先级SG处理。
异步挂起:
在处理较低优先级SG时发生来自较高优先级的SG请求,则暂停正在进行的信道处理,然后执行针对较高优先级SG的A/D转换。在高优先级SG的处理完成之后,恢复被暂停的低优先级SG的A/D信道转换。
图4.2
图4.3
Code segment4.1->Line155设置ADC采样时间
采样时间 = SMPT[7:0]/ADCLK = 18H/40MHz = 60us
图4.4
Code segment4.1->Line156
RDCLRE = 0:读取后不清空
ULEIE = 1:AD上下限错误检出中断使能
OWEIE = 0:AD溢出错误检出中断使能
图4.5
Code segment4.1->Line156 ADCA0SGCR1 = 0x10u;扫描完成时产生SG中断
图4.6
图4.7
图4.8
Code segment4.1->Line160 设置Virtual Channel的起点
Code segment4.1->Line161 设置Virtual Channel的终点
至此,ADC0初始化完成