瑞萨单片机(R5F100LE)多通道AD转换

    今天,在网上找了半天瑞萨单片机(R5F100LE)多通道AD转换的配置和使用方法,可一直没能找到,最后在用户手册的帮助下终于找到了,正确的方法。

    其实使用瑞萨的多通道AD,挺方便的,不麻烦,下面的图是CubeSuite + 代码生成器的配置方法。最关键的地方是Operation mode setting的配置要选择Continuous select mode这个模式。这样当一个通道转换完成之后产生一个中断,你在中断中读出ADC的转换值,然后配置寄存器ADS( 模拟输入通道选择寄存器),为下一个通道就行了,下一次AD转换就是你指定通道了,转换完成再次进入中断,然后你读出AD转换值,修改ADS.........,下面有代码和CubeSuite +工程链接,挺容易理解,不行就下工程来看看,记得看一下用户手册的ADS寄存器。


203328_PpPj_2255341.jpg

203328_UaIA_2255341.png

203328_Q8Ej_2255341.jpg205712_trSk_2255341.jpg

主函数:

void main(void)
{
    /* Start user code. Do not edit comment generated here */	
	
    R_MAIN_UserInit();    
	R_TAU0_Channel0_Start();	
	R_ADC_Set_OperationOn();
	R_ADC_Start();
    while (1U)
    {
      NOP();
    }
    /* End user code. Do not edit comment generated here */
}

中断函数:功能读取AD通道AIN0,AIN1,AIN2的值放到数组ADValue中。

/* Start user code for global. Do not edit comment generated here */
uint16_t ADValue[3]={0};
/* End user code. Do not edit comment generated here */

/***********************************************************************************************************************
* Function Name: r_adc_interrupt
* Description  : This function is INTAD interrupt service routine.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
__interrupt static void r_adc_interrupt(void)
{
    /* Start user code. Do not edit comment generated here */
	static uint8_t channel=0, ads=0;	
	
	ads = ADS;
	R_ADC_Get_Result(&ADValue[ads]);
	if(++ads==3)
		ads = 0;
		
	ADS = ads;
	
	
		
    /* End user code. Do not edit comment generated here */
}


瑞萨单片机(R5F100LE)多通道AD转换


转载于:https://my.oschina.net/u/2255341/blog/476788

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值