【龙印】龙芯1c上双路16位AD芯片TM7705的linux驱动

本文介绍了在龙芯1c上为3D打印机开发TM7705 ADC驱动的过程,用于温度测量。文章详细讨论了TM7705模块的硬件电路设计,包括模拟输入分压、参考电源选择、复位引脚的重要性,并提供了源码修改和设备驱动的配置方法。
摘要由CSDN通过智能技术生成

本文为在用龙芯1c做3D打印机过程中的笔记。龙芯1c做的3d打印机简称“龙印”,git地址“https://gitee.com/caogos/marlin_ls1c”

TM7705和热敏电阻一起实现3d打印机的温度测量。本文重点放在tm7705的linux驱动上,关于温度测量后面另外写一篇详细介绍。

硬件电路

测试用的硬件为“安富莱”推出的TM7705模块。这里着重强调一下TM7705是深圳天微电子的AD芯片,很多淘宝商家把名字都写错了。


为了使原理图更加清晰,把整个原理图分成了几块分别截图了。下面谈点个人对本模块的理解,仅供参考。

1,本模块的模拟输入端AIN1+,AIN1-和AIN2+,AIN2-分别通过两个10k电阻并联分压。这样的目的是为了把输入电压范围从0-2.5v扩大到0-5v,即满量程电压为5v。

因为使用的是2.5v的基准电源,所以实际上AIN引脚的输入范围为0-2.5v,通过两个10k电阻分压,而AIN1+和AIN2+则接到两个10k电阻中间,这样就实现了把测量范围从0-2.5v扩大到0-5v。凡事有两面性,正是由于引入了两个10k电阻,同时也引入了误差。

2,这个模块使用的参考电源是2.5v的,tm7705允许参考电源电压为0到vdd之间的任意值。

对于使用在3d打印机上来说,最后改为3.3v或者5v的参考电源(如果有的话)。marlin中有个脚本createTemperatureLookup.py可以生成一个AD值与温度对应的表格,用于程序中快速计算温度值。

假如待测试的电压很小,比如是毫伏级的,那么可以选择电源低一些的基准电源,这样有利于提高精度,同时如果需要,可以把增益设置大一点,tm7705最大可以支持128的增益。

3,tm7705是支持3.3v和5v供电的,具体选择哪个根据spi sclk的电平决定。如果SPI的SCLK线上的高电平为3.3v,那么推荐使用3.3v的电源给tm7705供电。比如龙芯1c的spi的SCLK是3.3v的,如果tm7705的vdd接5v,那么出现接口迷失的概率大大增加。

4,复位(reset)引脚。我在这里犯了低级错误,拿到电路图后,发现图上说已经上拉到vcc了,并且R13没贴。后面在接线时没接复位脚,悬空的;移植tm7705驱动时,没有操作复位脚。后来发现tm7705采集始终不是很稳定,每次上电后可以成功采集几次,过后就超时,或者一直采集到的值为0xfff,并且把龙芯1c热复位还不一定能解决。用示波器检查了,没发现问题,代码也检查了,没发现问题。经过两周的煎熬后,突然想起来把R13焊上,用软件复位tm7705试试。结果发现一切OK,并且后续如果出错,通过复位tm7705也都能解决,今天我从上午不断电连续测到现在都没问题。即使超时了,代码中也通过复位tm7705很快就解决了。

所以这里强烈建议:把tm7705复位脚接龙芯1c的一个gpio,每次上电后初始化时必须手动复位tm7705,如果出现超时或其它错误时,也可以通过复位tm7705来解决。

tm7705模块使用龙芯1c的SPI0_CS1

DRDY    --------    I2S_DI/GPIO87
RESET     --------    I2S_LRCK/GPIO89
VDD      --------     3.3V



源码

在文件arch\mips\loongson\ls1x\ls1c\platform.c中,
找到“static struct spi_board_info ls1x_spi0_devices[]”,在里面添加

#ifdef CONFIG_SPI_TM7705
    {
        .modalias       = "TM7705",
        .bus_num        = 0,
        .chip_select    = SPI0_CS1,
        // 当前cpu频率=252.00Mhz BUS=126.00Mhz
        // SPI最大的分频系数为4096
        // 所以spi最小频率=126Mhz/4096=30.7khz
        // 这里只是设置最大频率,实际频率为最接近并且小于最大频率的BUS分频后的值
        // 经过测试,最大频率设为为1mhz也能正常采集
        .max_speed_hz   = 500*1000,
//        .platform_data  = 
        .mode           = SPI_MODE_3,
    },
#endif

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值