This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1232:微控制器与 ADS1232的连接

Guru**** 1129500 points
Other Parts Discussed in Thread: ADS1232, ADS1230, ADS1232REF
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1061517/ads1232-interfacing-of-microcontroller-with-ads1232

器件型号:ADS1232
主题中讨论的其他器件: ADS1230

您好!

  任何人都可以共享编程代码、其中包括与微控制 器连接的 ADS1232。 另请分享 ADS1232与微控制器连接的原理图。

此致、

Shariq

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sharique、

    我们目前没有 ADS1232的示例代码。 但是、该器件为只读器件、因此您应该能够按照 ADS1232数据表中第8.4.6节中的时序图启动并运行 ADC。

    同样、要连接到 MCU、只需一条 DOUT 和一条 SCLK 线路(以及一个可选的 PWDN 引脚)。

    布莱恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bryan、

           感谢您的回复。 实际上、有一个有关 MSP430微处理器与 ADS1232 (或其他 ADSxxxx)以 TIDA 形式连接的示例代码、但我无法在 google 上找到该代码。

    此致、

    Sharique

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sharique、

    正如 Bryan 提到的、ADS1232是一款引脚控制型器件、无需软件配置。  ADS1232的原始评估模块称为 ADS1232REF 、我们曾为该板提供完整的源代码。  但是、TI 已决定原始代码不符合当前的审批流程和开源要求。  我们一直在开发可用作示例的新代码、但由于一些延迟、这将在明年年初之前提供。

    根据您使用的处理器、硬件抽象层会因微处理器而异。  如果将 DRDY/DOUT 连接到微控制器的 MISO 和具有中断功能的 GPIO、则最容易连接到硬件。  DRDY/DOUT 的下降沿应触发中断、并触发 SPI 接口以读取中断例程中的3个字节的数据。

    由于 ADS1232上没有 MOSI 引脚、可能会引起一些混淆。  最后、您只需通过写入微控制器的内部 TX 缓冲区来启动 SCLK、即使该引脚未连接任何内容、该缓冲区也会启动 SCLK 的输出。  数据传输完成后、从 RX 缓冲区中读取字节。

    伪代码如下所示:

    • 设置 SPI 外设和下降沿中断
    • 设置连续循环
    • 中断时的中断
      • 禁用中断
      • 将0xff (值不重要)放置在 TX 缓冲区中以启动时钟
      • 当 SCLK 完成后、将数据读取到数据的 MSB
      • 将0xff (值不重要)放置在 TX 缓冲区中以启动时钟
      • 当 SCLK 完成将数据读取到数据的中间字节时
      • 将0xff (值不重要)放置在 TX 缓冲区中以启动时钟
      • 当 SCLK 完成后、将数据读取到数据的 LSB
      • 对24位数据进行带符号扩展、使其达到带符号32。
      • 清除并重新启用中断(可以设置一个标志来检查处理循环中的新数据)
    • 执行其他处理事件
    • 环路

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的本杰明先生:

               感谢您的回复。 我还获得了该链接"">e2e.ti.com/.../2608785

    让我试一下、然后我会向您返回结果。

    此致、

    Shariq Hussain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sharique、

    基准 POST 使用位 bang GPIO 与 ADS1230 (20位)进行 SPI 通信。  使用24位 ADS1232时、使用内置的微型 SPI 外设会更容易。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的本杰明先生:

       这意味着使用微控制器的 SPI 外设比使用位 bang GPIO 更容易。 在这里、我想问微控制器的 MISO 应该连接到 ADC 的 DOUT/DRDY、微控制器的 SPI CLK 应该连接到 ADC 的 SCLK 引脚、微控制器的哪个引脚应该连接到 ADC 的 PDWN。

    此致、

    Shariq Hussain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shariq、

    您的 SPI 连接正确。  微控制器的 MOSI 引脚可保持悬空。  PDWN 引脚可连接到微控制器上的任何可用 GPIO 引脚。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的本杰明先生:

                实际上、我们与 ESP BLE 网状网络进行了类似的合作、很抱歉耽误了时间。 我们将使用微控制器的三个引脚来连接 ADS1232。

    MISO、SCK、外部接口为三个引脚。 我们在主模式下配置 SPI。 首先、为了启动串行时钟、我们必须通过 Tx 缓冲器发送虚拟字节。 但在主模式下、我们只通过 MISO 引脚接收数据。 那么、如何通过 MISO 引脚发送虚拟字节。

    此致、

    Shariq Hussain  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shariq、

    即使您没有在微控制器上使用 MOSI 引脚、您仍然可以启动 SCLK 以将虚拟字节写入所使用微控制器的 TX 缓冲器。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob 先生:

             为什么每次收到0xFF? 另请参见附加的信号。 在固件中、我按照您的步骤操作。 将 SPI 初始化为频率为1MHz 的主器件。  

    while (1)//理想循环任务

         IWDG_KR = 0xAA;//将 IWDG 向下计数器重置为 FF

         IF (FallingEdgeDetect = 1)
         {
            PD_CR2 &= 0xFB;//禁用 PD2作为外部中断

            while ((SPI_SR & SPI_FLAG_TXE)= 0x00){}//等待发送结束
            SPI_DR = 0x52;//发送虚拟字节
            while ((SPI_SR & SPI_FLAG_RXNE)= 0x00){}//等待 SPI 完全接收字节
            Data1 = SPI_DR;//将接收到的字节存储在 RxBuffer 中

            while ((SPI_SR & SPI_FLAG_TXE)= 0x00){}//等待发送结束
            SPI_DR = 0x52;//发送虚拟字节
            while ((SPI_SR & SPI_FLAG_RXNE)= 0x00){}//等待 SPI 完全接收字节
            Data2 = SPI_DR;//将接收到的字节存储在 RxBuffer 中

            while ((SPI_SR & SPI_FLAG_TXE)= 0x00){}//等待发送结束
            SPI_DR = 0x52;//发送虚拟字节
            while ((SPI_SR & SPI_FLAG_RXNE)= 0x00){}//等待 SPI 完全接收字节
            Data3 = SPI_DR;//将接收到的字节存储在 RxBuffer 中

            PD_CR2 |= 0x04;//启用 PD2作为外部中断

      FallingEdgeDetect = 0;


    @far @中断 void EXTI_PORTD_IRQHandler (void)

         FallingEdgeDetect = 1;

         返回;

    此致、

    Shariq Hussain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shariq、

    如果我正确理解示波器截图、则左侧图片显示 MISO、右侧图片显示来自微型的 MOSI。  我看到的第一个问题是仅传输8个时钟、而不是整个24个数据时钟。  第二个问题是微控制器使用了错误的相位。  ADS1232在 SCLK 的上升沿转换、并在下降沿保持稳定。  这有时称为模式1 SPI。  您使用的是模式0、它在下降沿转换并在上升沿保持稳定。  您需要将 SPI 的相位更改为正确的模式。

    我没有看到任何显示0xFF 的数据、实际上、数据的第一个字节是0x00。  查看所有数据而不仅仅是一个字节会有所帮助。  查看原理图也会有所帮助。  您必须确保 AVDD 和 DVDD 处于标称工作电压并连接了适当的基准。  所有数字输入都应连接到某个特定的逻辑电平、而不应悬空。  PDWN 引脚也必须设置为高电平。

    在不尝试读取数据的情况下、您可以通过监控 DRDY/DOUT 来验证 ADS1232是否正在运行、并且您应该会看到转换准备就绪信号以由 SPEED 引脚设置选择的所选数据输出速率切换。

    您的代码显示了对发送和接收使用相同的寄存器。  这对于您的微控制器来说可能是正确的、但我建议您验证您使用的寄存器是正确的微控制器。  此外、在将虚拟字节放入寄存器之前、您将清除发送缓冲区。  通常、在检查缓冲区是否为空之前、我希望字节被放置在寄存器中。  我会验证这是正确的过程。

    此外、在中断例程中、您不会清除中断。  通常、这是防止中断连续重新进入中断所必需的。  我建议在每次输入中断后验证中断是否被清除。

    我希望这能让您对要检查的内容以及如何验证数据有所了解。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob 先生:

       请查找随附的包含图像和视频的原理图和 zip 文件。

    =>这里我附加了一个运行电路的原理图、其中 PIC 微控制器与 ADS1232相连。 微控制        器用于连接的3个引脚、所有3个引脚均为正常 GPIO、这意味着这些引脚上没有 SPI 功能。实际上、我使用示波器观察到 PDWN 连续保持高电平、所附图像中包含 SCLK 和 DOUT/ Ddy 的信号。 SCLK 频率为117.7KHz、+width 为5.7uec、-width 为2.7uec。 完成        24个时钟脉冲的持续时间为200 μ s。 该周期每隔100毫秒重复一次。 与24 clk 相比、还有小宽度25脉冲      脉冲。请耐心地查看所有图片以获得更好的间隙。绿色信号为 SCLK、黄色为 DOUT、蓝色为 PDWN。
       这是市场上购买的电路。

    =>现在我所做的是、切断 PCB 上 DOUT 和 SCLK 的轨道、以断开 PIC MCU 和 ADS1232之间的通信。 并连接我的开发       使用3根导线与 ADS1232配合使用。 来自同一 ADS 引脚 DOUT 的两根导线、一根连接到 MCU 的外部中断 GPIO、另一根连接到 MCU 的 MISO。       第三根线 SCLK 连接到 MCU 的 SCLK。 在固件中,我将 SPI 初始化为频率为1MHz.Frame 格式的主器件:MSB 首先传输,时钟          极性为0:空闲时 SCK 为0。开发套件的 VDD (+5V)和 VSS 连接到该电路。 未使用我的 MCU 中的 PDWN、因为它的维生素很高      PIC MCU。 请查看所有图片和一个视频、耐心等待更好的间隙。绿色信号为 SCLK、黄色为 MISO、蓝色为 MOSI。

    =>我通过 MOSI 发送0x52 (虚拟字节)。 由于传输是8位、因此可能是8个 clk 脉冲的原因。

    =>是的、您回答正确、SPI 的相位错误、所以我纠正了这个问题。在固件 SPI 初始化中、现在时钟相位为1:第二个时钟转换是       第一  个数据采集边沿

    => SPI_DR–数据寄存器
       数据寄存器用于两种情况、即接收到数据和传输数据。 读取该寄存器将从接收中检索数据      缓冲器。 设置该寄存器将把指定的值加载到发送缓冲区中。

    =>根据您的建议、现在我首先发送虚拟字节、然后等待清除 Tx 缓冲区。 接收到数据后、等待清除 Rx 缓冲器。

    =>没有用于清除外部中断的记录寄存器。 EXT INT 适用于我们的远程协议、这意味着没有问题。


    while (1)//理想循环任务

      IF (FallingEdgeDetect = 1)
      {  
         PD_CR2 &= 0xFB;//禁用 PD2作为外部中断

         SPI_DR = 0x52;//发送虚拟字节
         while ((SPI_SR & SPI_FLAG_TXE)= 0x00){}//等待发送结束
         Data1 = SPI_DR;//将接收到的字节存储在 RxBuffer 中
         while ((SPI_SR & SPI_FLAG_RXNE)= 0x00){}//等待 SPI 完全接收字节


         SPI_DR = 0x52;//发送虚拟字节
         while ((SPI_SR & SPI_FLAG_TXE)= 0x00){}//等待发送结束
         Data2 = SPI_DR;//将接收到的字节存储在 RxBuffer 中
         while ((SPI_SR & SPI_FLAG_RXNE)= 0x00){}//等待 SPI 完全接收字节

         SPI_DR = 0x52;//发送虚拟字节
         while ((SPI_SR & SPI_FLAG_TXE)= 0x00){}//等待发送结束
         Data3 = SPI_DR;//将接收到的字节存储在 RxBuffer 中
         while ((SPI_SR & SPI_FLAG_RXNE)= 0x00){}//等待 SPI 完全接收字节

         PD_CR2 |= 0x04;//启用 PD2作为外部中断

         FallingEdgeDetect = 0;
      }


    @far @中断 void EXTI_PORTD_IRQHandler (void)

      FallingEdgeDetect = 1;

      返回;

    e2e.ti.com/.../PIC_2800_mcu_29002D00_ADS1232.rare2e.ti.com/.../My_2800_mcu_29002D00_ADS1232.rare2e.ti.com/.../3364.Schematic.PDF

    此致、

    Shariq Hussain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shariq、

    感谢您提供更多信息。  该器件以10sps 运行、从而获得100ms 的转换结果。  那么、此时您是否有任何问题、因为它似乎按预期工作?

    增益设置为增益2、原理图不清楚输入是什么或施加的电压。  因此、我无法说出代码的预期结果。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob 先生:

            施加的电压为+5V。 下面是市场上购买的运行电路(PIC MCU)与 MCU 接口之间的比较、我提出的几个问题:  

    =>在 PIC MCU 文件夹中、可以清楚地看到使用了25个时钟脉冲、而我使用的是24个脉冲。 为什么?

    =>在 PIC MCU 文件夹中、使用简单的 GPIO 引脚、25个无间隙的时钟脉冲。 我正在使用 SPI 时钟引脚、因此在24个时钟脉冲的数据包中、每个8时钟脉冲之间存在间隙。 为什么?  

    =>在 PIC MCU 文件夹中、每隔100毫秒重复一次数据和 clk 组合。 但在我的情况下、有意外行为意味着没有完美的间隔。   为什么?

    =>在 PIC MCU 文件夹中、每隔100毫秒 DOUT 引脚从高电平变为低电平、25时钟脉冲之后 DOUT 引脚变为高电平状态。 但在我们的案例中、在发送给您的视频中可以看到不同的行为。

    此致、

    Shariq Hussain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shariq、

    我建议查看 ADS1232数据表。  我将尝试回答您的问题。

    [引用 userid="248879" URL"~/support/data-converters-group/data-converters/f/data-converters-forum 1061517/ads1232-mcand-ads1232/3948129#3948129"]]>在 PIC MCU 文件夹中、可以清楚地看到使用了25个时钟脉冲、我使用的是24个脉冲。 为什么?[/报价]

    显然、最初的实现是使用轮询方法来结束转换、而不是使用中断方法。  这意味着 DRDY/DOUT 输出必须强制为高电平才能识别转换已完成、这在 DRDY/DOUT 上表现为从高电平到低电平的转换。  原因是上一次转换读取的 LSB 可以是高电平或低电平。  如果它为低电平、则轮询环路很容易将低电平输出误解为新的转换。  使用中断是首选方法、因为无论引脚之前的状态如何、高电平到低电平转换始终在 DRDY/DOUT 上发生。  请参阅第24页的 ADS1232数据表和图8-9 (显示转换结束后的新数据就绪转换)和8-10 (显示第25个时钟后 DRDY/DOUT 变为高电平)。

    [引用 userid="248879" URL"~/support/data-converters-group/data-converters/f/data-converters-forum 1061517/ads1232-mcand-ads1232/3948129#3948129"]]>在 PIC MCU 文件夹中、使用了简单的 GPIO 引脚、25个无间隙的时钟脉冲。 我正在使用 SPI 时钟引脚、因此在24个时钟脉冲的数据包中、每个8时钟脉冲之间存在间隙。 为什么?  [/报价]

    最初的执行显示了一个使用 GPIO 引脚的"位 bang "方法。  这需要一组独特的函数、这些函数实际上需要特定的处理器时间才能完成、一旦启动、就不应中断。  外设通常独立于主处理循环运行。  这提供了一个接近50/50的占空比、这是首选。  Bit-bang 方法与函数的时序有关、可通过其他处理步骤中断。  使用 SPI 外设时、传输字节之间可能会有延迟、具体取决于使用情况。  在您的情况下、在等待 TX 缓冲区清空和 RX 缓冲区准备就绪时会创建空间(由" while "条件导致)。  从器件读取的字节之间的时间间隔很短、这一点不会受到影响。

    [引用 userid="248879" URL"~/support/data-converters-group/data-converters/f/data-converters-forum 1061517/ads1232-mcentering-of microcontroller-with-ads1232/3948129#3948129"]]>在 PIC MCU 文件夹中,数据和 clk 组合每隔100ms 重复一次。 但在我的情况下、有意外行为意味着没有完美的间隔。   为什么?[/报价]

    ADS1232每100ms 完成一次转换、但在转换完成后、您可能不会读取转换。  确保您的中断在 DRDY/DOUT 的下降沿(高电平到低电平)转换时触发。  还要确保您的总处理循环时间不超过100ms、否则您将丢失数据。  如果您要将数据传输到 COM 终端或其他显示器、可能会出现环路延迟。  我在视频中注意到、示波器在大约1秒的间隔而不是100ms 触发。  在 DOUT/DRDY 通道的下降沿触发示波器。  我想您会发现您没有捕获所有数据、但转换以100ms 的间隔完成。

    [引用 userid="248879" URL"~/support/data-converters-group/data-converters/f/data-converters-forum 1061517/ads1232-mcuiting-of microcontroller-with ads1232/3948129#3948129"]]>在 PIC MCU 文件夹中、DOUT 引脚每隔100毫秒从高电平变为低电平、25时钟脉冲 DOUT 引脚变为高电平状态。 但在我们的案例中、发送给您的视频中会出现不同的行为。

    是的、这就是我在第一个回答中所说的内容。  24个 SCLK 是数据。  第25个时钟将强制 DRDY/DOUT 为高电平。  如果发送26个或更多时钟、ADS1232将进入自偏移校准周期、在10sps 数据速率下、需要大约8个转换周期(800ms)才能完成并为所选输入提供适当的转换结果。  如前所述、转换 LSB 可以是高电平或低电平、并且在通过 GPIO 轮询引脚时、需要强制此引脚为高电平。  使用中断驱动系统时、您会监控 DRDY/DOUT 上的下降沿、并且与 DRDY/DOUT 的先前状态无关。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob 先生:

            根据我的理解、 需要生成第25个时钟脉冲的错误是什么。 DOUT 引脚变为高电平。 然后等待 DOUT 引脚从高电平到低电平的转换、这将在100ms 后发生。

    查询1:=>那么,对于第25个脉冲,我必须做什么? 因为如果我再次在24个 clk 脉冲之后发送一个虚拟字节、那么它将再生成8个 clk 脉冲。 意味着总共30个时钟脉冲。

    查询2:=>我还在论坛上看到了您以前的答案,您在论坛中建议 GPIO 位 bang 方法比 SPI 外设更容易。 但您告诉我、SPI 外设优于 GPIO 位 bang 方法。 您还建议了一个固件指导链接、但在单击链接网页时没有响应。 为此、请检查随附的图像  

    此致、

    Shariq Hussain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shariq、

    我的解释中仍然存在断开连接的情况、很抱歉我不清楚或不完全理解您的使用案例。  如果您没有从 ADS1232收集任何数据、您将看到当速度引脚设置为低电平时(如您提供的原理图中所示)、DRDY/DOUT 将每100ms 进行一次低-高-低脉冲。

    每次转换完成后、DRDY/DOUT 将始终从高-低或低-高-低转换。  根据数据中的最后一位、输出可能已经是高电平、以便只能看到高电平-低电平转换。  如果发送的最后一位为低电平、则操作将为低电平-高电平-低电平。  这显示在第24页的数据表中。

    更新周期显示为将转换结果放入 DRDY/DOUT 上要传输的输出缓冲器的最短时间为39us。  我在演示中从您的视频中捕获了以下屏幕截图。

    请注意、中断在 DRDY/DOUT 上的高-低转换过程中工作、您的代码识别出新数据可从 ADS1232读取。  因此、我希望这一点更清楚、为什么不需要25个 SCLK 来确定是否有新数据可用。  

    还应考虑 ADS1232器件的使用寿命约为15年、许多旧的微控制器速度非常慢、并且可能无法实现 GPIO 中断。  如果是这种情况、则使用轮询循环来监控 DRDY/DOUT 的状态。  在这种情况下、微处理回路可能太慢、无法识别低-高-低转换的39us 转换时间、这将需要更长的时间来确定 DRDY/DOUT 是否实际进行了低-高-低转换。  对于这个特定的用例、需要位 bang 方法并且使用第25个 SCLK 会强制 DRDY/DOUT 为高电平。  使用的最佳方法是中断方法(也在 ADS1232REF 上使用)、而不是 Bit-bang 方法和25个 SCLK。

    [引用 userid="248879" URL"~/support/data-converters-group/data-converters/f/data-converters-forum 1061517/ads1232-mcentering-of microcontroller-with-ads1232/3949065#3949065]Query 1:=>那么,对于第25个脉冲,我必须做什么? 因为如果我再次在24个 clk 脉冲之后发送一个虚拟字节、那么它将再生成8个 clk 脉冲。 表示总共30个时钟脉冲。[/QUERP]

    请勿使用25 SCLK、因为您的代码已经在运行、如上图所示。  如果您发送额外的字节(实际上是32个时钟、而不是30个时钟)、则会将 ADS1232置于自偏移校准中、这需要800ms 才能完成。

    [引用 userid="248879" URL"~/support/data-converters-group/data-converters/f/data-converters-forum 1061517/ads1232-mcand-ads1232/3949065#3949065">Query 2:=>我还在论坛上看到了您以前的答案,您在论坛中建议 GPIO 位 bang 方法比 SPI 外设更容易。 但您告诉我、SPI 外设优于 GPIO 位 bang 方法。 您还建议了一个固件指导链接、但在单击链接网页时未响应。

    正如我之前所说的、ADS1232现在已使用了大约15年以上、您所指的响应也很旧。  由于 IT 安全原因、FTP 服务器在您的帖子中显示的响应发生后很快关闭。  FTP 服务器上的软件"受限制"不需要特定的软件发布标准、因为这些标准与 TI 的某些法律要求有关。  因此、以前的形式不再提供链接和软件。  我目前正在努力更新示例代码、该代码最终将放置在 ADS1232的产品页面上、但这至少需要6周的时间。  

    正如我之前所说的、您提到的 TI 代码是由中断驱动的、而不是位 bang。  因此、我建议您继续使用您正在使用的代码并对其进行优化。  是指特定竞争对手处理器上的 POST 请求信息、我不知道如何设置 SPI 外设、或者是否有可中断的 GPIO 引脚可用。  因此、在这种特定的客户用例中、使用 Bit-Bang 方法可能更容易。  如果中断方法可用、我不建议使用 Bit-bang 方法。

    由于 ADS1232没有寄存器且由引脚控制、因此与其他 ADC 相比、它不是一个复杂的器件(尽管您可能认为是)。  请遵循数据表以及有关设置和时序的信息、您可以获得收集数据所需的所有信息。  即将发布的示例代码与您在该主题中发布的代码没有太大不同。  代码中最困难的部分是硬件抽象、由于它与 SPI 外设和通信相关、因此与处理器相关。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob 先生:

            请检查随附的 zip 文件夹,即“结果”:

    1 =>感谢您对固件的指导、因为我得到了结果。 请验证"结果"文件夹的图像、以确认其正确。

    2 =>在固件端、我做了一些更改、即分别在发送/接收之前等待 Tx/Rx 缓冲器的间隙。 根据执行此操作、我根据信号读取确切的字节。

    3 => 文件夹还包含 ADS1232以及附近硬件集成的原理图。 目前、我没有压力传感器、需要长达10天的时间才能交付给我。 到目前为止、连接器已打开、我们正在读取的是一个垃圾或浮点值。 那么、对于自检、我可以在这里为 PL11连接器的第1个引脚提供100毫伏信号、为 PL11连接器的第2个引脚提供 GND 信号吗?   

    4 =>在常规 MCU 内置的 ADC 中、如10位或12位、我们只是知道在这个特定的模拟电压上、我们得到了这个特定的计数值。 因此、如果我们在 PL11连接器上提供100毫伏的信号、我们在 ADS1232的输出端得到的是什么。

    此致、

    Shariq Hussaine2e.ti.com/.../Result.rar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shariq、

    现在、代码似乎从 ADS1232正确读取。  至于您的原理图、我不确定此电路的用途是什么。  输入端有一个隔直电容 C5A、ADS1232设计用于测量直流信号或靠近直流信号。

    至于代码到电压的转换、这显示在第23页的数据表中。  一个 LSB (或一个代码)等于 (0.5 VREF/增益)/(223–1)。  原理图显示 GAIN0引脚被拉至高电平、增益为2。  基准电压显示为5V。  因此、1个代码的值等于((0.5 * 5V / 2)/(8388607)= 149nV。  输入电压由 ADC 代码数(24位值)乘以1代码值决定。  对于100mV 输入、您应该会看到大约为671141十进制或0x0A3DA4的代码。  但是、在安装了 C5A 电容器的情况下、很难说出预期的值。

    此致、

    Bob B