基于龙芯2K1000平台CL1606&AD760-8驱动调试总结

本文详细描述了在龙芯2K1000平台上,从硬件设计到驱动编写,成功驱动AD采集板AD7606并实现电流值读取的过程。主要涉及驱动调试和硬件调试两部分,包括设备树配置、SPI接口设置、GPIO中断的修正等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   历经两周终于将设计的AD采集板驱动起来,并且读取电流值成功,唯不是一个突破!
   由硬件设计再到驱动,一步步设计改变;到设备树添加驱动并加载,总结主要分为两方面,一个驱动调试和硬件调试。细节如下:

驱动调试步骤:
第一步:添加驱动文件到设备树:
去到spi0底下添加如下代码:

adc7606@2 {
		compatible = "adi,ad7606-8";	//厂家编号
		reg = <2>;				/* CS2 */
		spi-max-frequency = <12000000>;	/* 12MHZ */
		spi-cpol;
        interrupt-parent = <&icu>;   ------1.
        interrupts = <59>;                				/* used goodix */		--2.
        irq-gpios = <&pioA 41 GPIO_ACTIVE_LOW>; 			/* IRQ 41 */   --3.
		adi,conversion-start-gpios = <&pioA 39 GPIO_ACTIVE_HIGH>;	/* select mode39 */
		reset-gpios = <&pioA 37 GPIO_ACTIVE_HIGH>;			/* reset io 37*/
	};

注:1-3标注的地方,进行调试多次没成功,具体是因为loongson自身IO中断问题,给出的例子如下:(路径:linux-5.10-2k1000-dp-src/drivers/input/touchscreen/goodix.c)
37,39,41 分别是我的复位脚,启动脚和中断脚
第二步:Goodix.c是触摸屏程序,在申请gpio中断时,添加了GPIOD触发

#ifdef CONFIG_MACH_LOONGSON64
	/* gpiod_to_irq用于gpio中断使能,修正龙芯平台的gpio中断 */
	gpiod_to_irq(ts->gpiod_int);
#endif

ts->gpiod_int:触摸屏的中断引脚
第三步:文件修改如下:(路径:/linux-5.10-2k1000-dp-src/drivers/iio/adc/ad760.c)
在**static int ad7606_request_gpios(struct ad7606_state *st)**函数中添加中断脚
具体照猫画虎,例子如下:

st->gpio_irq = devm_gpiod_get_optional(dev, "irq",GPIOD_IN);
	if (IS_ERR(st->gpio_irq))
		return PTR_ERR(st->gpio_irq);//add
#ifdef CONFIG_MACH_LOONGSON64
	/* gpiod_to_irq用于gpio中断使能,修正龙芯平台的gpio中断 */
	gpiod_to_irq(st->gpio_irq);
#endif
st:是ad7606的IO申请的结构体

第四步:修改AD7606头文件
在state结构体声明gpio_irq 中断引脚即可。
struct gpio_desc *gpio_irq;//add adc
第五步:编译,烧录内核即可
术语解析:
icu :原生GPIO的集合,提供中断
pioA : 在设备树文件里有定义,继承了原生GPIO的中断

以上就是基于龙芯2K1000平台的AD采集移植
硬件调试方面:查看AD7606的官方文件:
AD7606芯片文档
其他平台参照官网即可,链接如下:
ADI芯片官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值