ADC转换步骤
1.SARADC_CTRL[3] 设置为0 adc断电
2.SARADC_CTRL[2:0] 选择adc通道
- 000 输入通道0
001 输入通道1
010 输入通道2
011 输入通道3
100 输入通道4
101 输入通道5*
3.SARADC_CTRL[5] 设置为1使能adc中断
4.SARADC_CTRL[3] 设置为1 adc工作
5.等待ADC中断或SARADC_SATA状态寄存器轮询判断是否采集结束
6.从SRADC_DATA[9:0]读取转换结果
Rochchicp逐次逼近寄存器(SAR) A/D 转换器绑定(设备树)
所需属性
-compatible “产商-详细名称”
-reg “控制器物理基址和内存映射区域的长度”
-interrupts “CPU中断号,中断指示符格式取决于中断控制器”
中断类型 :GIC_SPI 共享外设中断 GIC_PPI 私有外设中断
`#define IRQ_TYPE_NONE 0 内核不改变,开机或uboot怎么设置就是什么
#define IRQ_TYPE_EDGE_RISING 1 上升沿触发
#define IRQ_TYPE_EDGE_FALLING 2 下降沿触发
#define IRQ_TYPE_EDGE_BOTH ( IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING ) 双边沿触发
#define IRQ_TYPE_LEVEL_HIGH 4 高电平
#define IRQ_TYPE_LEVEL_LOW 8 低电平
-clocks “每个时钟名称必须包含一个表项”
aclk 一般用于数据传输 hclk 和 pclk 一般用于寄存器读写
-clocks-name “时钟名称为xxx”,“外围时钟名称为xxx”
verf-supply “调压器提供ADC参考电压”
#io-chanel-cells “应该是1,可参考…/iio-bindings.txt”
static const struct of_device_id rockchip_saradc_match[] = {
{
.compatible = "rockchip,saradc",
.data = &saradc_data,
}, {
.compatible = "rockchip,rk3066-tsadc",
.data = &rk3066_tsadc_data,
}, {
.compatible = "rockchip,rk3399-saradc",
.data = &rk3399_saradc_data,
}, {
.compatible = "rockchip,rk3568-saradc",
.data = &rk3568_saradc_data,
},
{},
};
MODULE_DEVICE_TABLE(of, rockchip_saradc_match);//of 设备类型 rockchip_saradc_match设备列表