ADS1118,关于这个器件的驱动问题

因为是自己做的尝试版本,所以没有自己做的一块兼容此项目的一个开发板,所以只能自己接模块接线路::

我如果用3.3V供电,测试单通道,那么我能测到3.3V及以下的电压,SPI发送并且会回应我数据,3.3V都很正常。

但是我的电路要求是5V供电并且检测1~4.5V的电压,测试单通道,此时我的SPI设置电平为3.3V或者5V,SPI的发送和接收数据就变得好奇怪。

我换过3颗ads1118了,但是情况都是一样的。

一、这是3.3V供电,spi电平为3.3V,检测电压3V,在这里电压检测为3V,正常,如图:

二、这是5V供电,spi电平为3.3V,检测电压3V,在这里电压检测为0V,不正常,如图:

这里有问题,如图:

放大后,可以看到,我的这个SPI的SCK是推挽输出,怎么好像有什么干扰一样,我也不太懂这是为什么,如图:

三、这是5V供电,spi电平为5V,检测电压3V,在这里电压检测为0V,不正常,如图:

 

结果与二是出奇的相似,放大也一样有一些干扰我不懂为何,我单片机初始化是这样子初始化的,

电平转换单片机3.3V通过TXS0108这颗IC转换成5V的,逻辑分析仪上接的电平是单片机这一端的3.3V电平(SPI的电平)

现在我只剩下怀疑SPI是否有问题了,希望有人能够帮我解答

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的ADS1118芯片驱动代码,使用SPI总线进行通信: ```c #include <SPI.h> #define CS_PIN 10 // Chip select pin #define DRDY_PIN 6 // Data ready pin // ADS1118 register addresses #define REG_CONVERSION 0x00 #define REG_CONFIG 0x01 // Configuration register bit fields #define CFG_OS_BIT 15 #define CFG_MUX_BIT 12 #define CFG_PGA_BIT 9 #define CFG_MODE_BIT 8 #define CFG_DR_BIT 5 #define CFG_COMP_MODE_BIT 4 #define CFG_COMP_POL_BIT 3 #define CFG_COMP_LAT_BIT 2 #define CFG_COMP_QUE_BIT1 1 #define CFG_COMP_QUE_BIT0 0 // Configuration register values #define CFG_OS_SINGLE_CONV 0x8000 // Start single conversion #define CFG_MUX_AIN0_AIN1 0x0000 // Differential inputs AIN0 and AIN1 #define CFG_PGA_6_144V 0x0000 // Full scale range +/-6.144V #define CFG_MODE_SINGLE_CONV 0x0100 // Single conversion mode #define CFG_DR_128SPS 0x0000 // Data rate 128 samples per second #define CFG_COMP_MODE_TRADITIONAL 0x0000 // Traditional window comparator mode #define CFG_COMP_POL_ACTIVE_LOW 0x0000 // Active low comparator polarity #define CFG_COMP_LAT_NON_LATCHING 0x0000 // Non-latching comparator #define CFG_COMP_QUE_ASSERT_AFTER_1_CONV 0x0000 // Assert after one conversion void setup() { // Initialize SPI communication SPI.begin(); SPI.setDataMode(SPI_MODE1); SPI.setClockDivider(SPI_CLOCK_DIV16); pinMode(CS_PIN, OUTPUT); digitalWrite(CS_PIN, HIGH); // Set chip select pin to high pinMode(DRDY_PIN, INPUT_PULLUP); // Data ready pin // Configure ADS1118 writeRegister(REG_CONFIG, CFG_OS_SINGLE_CONV | CFG_MUX_AIN0_AIN1 | CFG_PGA_6_144V | CFG_MODE_SINGLE_CONV | CFG_DR_128SPS | CFG_COMP_MODE_TRADITIONAL | CFG_COMP_POL_ACTIVE_LOW | CFG_COMP_LAT_NON_LATCHING | CFG_COMP_QUE_ASSERT_AFTER_1_CONV); } void loop() { // Wait for data ready pin to go low while(digitalRead(DRDY_PIN)); // Read conversion value int16_t value = readRegister(REG_CONVERSION); // Do something with the conversion value } void writeRegister(uint8_t address, uint16_t value) { // Send command byte digitalWrite(CS_PIN, LOW); SPI.transfer(address); // Write register value SPI.transfer16(value); digitalWrite(CS_PIN, HIGH); } int16_t readRegister(uint8_t address) { // Send command byte digitalWrite(CS_PIN, LOW); SPI.transfer(address); // Read register value int16_t value = SPI.transfer16(0); digitalWrite(CS_PIN, HIGH); return value; } ``` 注意,这只是一个基本的示例代码,实际应用中还需要进行更多的配置和错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值