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.

[参考译文] DAC53701:生成医用音频和可视警报

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1012313/dac53701-generating-medical-audio-and-visual-alarm

器件型号:DAC53701

尊敬的 TI 团队:

有人能帮我通过此智能 DAC 生成医用警报吗? 我尝试了很多、但无法使其正常工作。

请提供此芯片配置的 I2C 代码、以便使用 GPI 引脚生成医疗视觉和音频警报。

另外、请给出可用于此目的的电路图。

谢谢、此致、

Deepak Kumar、

嵌入式设计工程师、

Noccarc Robotics Pvt Ltd.

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

    Deepak、您好!  

    DAC53701数据表的9.2.3节中给出了一个用于生成音频医用警报的电路。 它使用2个 DAC53701s 来创建医用警报和脉冲频率。   

    你在哪里遇到了麻烦? 我将检查并查看我们是否还有可视化的医用警报电路 可用。  I2C 代码如下所示:

    #define I2C_ADDR_DAC1 0x48

    #define I2C_ADDR_DAC2 0x49

    #define I2C_ADDR_broadcast 0x47

     

    //为 DAC1和 DAC2设置 I2C 地址

    //将两个器件的 GPI 引脚设置为0

    //将 CONFIG2寄存器中的 GPI_CONFIG 设置为111b

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x31));// 将 GPIO_config 设置为0b111
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

     

    //将触发寄存器中的 GPI_EN 设置为1b

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD3));// 触发寄存器
    Wire.write (byte (0x04));// 将 GPIO_EN 设置为0b1
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

     

    //将需要配置的器件(DAC2)的 GPI 引脚设置为逻辑高电平

    //将数据写入 CONFIG2寄存器中的 SLAVE_ADDRESS 位域。 只有具有 GPI 引脚逻辑高电平的器件才会更新命令中传递的 SLAVE_ADDRESS 设置。 在此过程中、确保同一 I2C 总线上的其余器件各自的 GPI 引脚设置为逻辑低电平。

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x40));// 将 SLAVE_ADDRESS 设置 为0b01
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

     

    //切换器件的 GPI 引脚将编程设定为逻辑低电平

    //将 GPI_EN 设置为0b

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD3));// 触发 寄存器
    Wire.write (byte (0x00));// 将 GPIO_EN 设置 为0b0
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

     

    //将 GPI_CONFIG 更改为000b

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x00));// 将 GPIO_config 设置为0b000
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输  

     

    //触发 NVM 写入操作。

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD3));// 触发寄存器
    Wire.write (byte (0x00));//  
    Wire.write (byte (0x10));// 将 NVM_PROG 设置为0b1
    wire.endTransmission ();//停止传输  

     

    //加电 DAC1、启用 VDD 基准、slw_rate:1.6384ms (方波频率:610Hz)

    Wire.beginTransmission(I2C_ADDR_DAC1);
    Wire.write (byte (0xD1));// General_config 寄存器
    Wire.write (byte (0xC1));//  
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

      

    //在 DAC1上设置 MARGIN_HIGH

    Wire.beginTransmission(I2C_ADDR_DAC1);
    Wire.write (byte (0x25));// DAC_MARGIN_HIGH 寄存器
    Wire.write (byte (0x0F));//  
    Wire.write (byte (0xFC));//  
    wire.endTransmission ();//停止传输

      
    //在 DAC1上设置 MARGIN_LOW

    Wire.beginTransmission(I2C_ADDR_DAC1);
    Wire.write (byte (0x26));// DAC_MARGIN_LOW 寄存器
    Wire.write (byte (0x00));//  
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

      
    //将 DAC1 GPIO 设置为触发方波

    Wire.beginTransmission(I2C_ADDR_DAC1);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x18));// 将 GPIO_CONFIG 设置为0b011
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

      
    //加电 DAC2、启用 VDD 基准
    //CODE_STEP:8 LSB、SLEW_RATE:204.8 μ s x 1.75 = 358.4 μ s (满量程 µs µs 下降时间:~26ms)

    Wire.beginTransmission(I2C_ADDR_DAC2);
    Wire.write (byte (0xD1));// General_config 寄存器
    Wire.write (byte (0x0A));//  
    Wire.write (byte (0x80));//  
    wire.endTransmission ();//停止传输

      
    //option-1:将 DAC2 GPIO 配置为以最短时间设置触发低优先级警报

    //将 CONFIG2寄存器中的 GPI_CONFIG 设置为111b

    Wire.beginTransmission(I2C_ADDR_DAC2);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x30));// 将 GPIO_config 设置为0b110
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

      
    //option-2:将 DAC2 GPIO 配置为以 最短时间设置触发中等优先级警报
    Wire.beginTransmission(I2C_ADDR_DAC2);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x28));// 将 GPIO_config 设置为0b101
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

      
    //option-3:将 DAC2 GPIO 配置为使用 最短时间设置和触发来触发高优先级警报
    Wire.beginTransmission(I2C_ADDR_DAC2);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x20));// 将 GPIO_config 设置为0b100
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

      
    //在 DAC2上设置 MARGIN_HIGH

    Wire.beginTransmission(I2C_ADDR_DAC2);
    Wire.write (byte (0x25));// DAC_MARGIN_HIGH 寄存器
    Wire.write (byte (0x0F));//  
    Wire.write (byte (0xFC));//  
    wire.endTransmission ();//停止传输

      
    //在 DAC2上设置 MARGIN_LOW
    Wire.beginTransmission(I2C_ADDR_DAC2);
    Wire.write (byte (0x26));// DAC_MARGIN_LOW 寄存器
    Wire.write (byte (0x00));//  
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

       

    //将触发寄存器中的 GPI_EN 设置为1b

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD3));// 触发寄存器
    Wire.write (byte (0x04));// 将 GPIO_EN 设置为0b1
    Wire.write (byte (0x00));//  
    wire.endTransmission ();//停止传输

     

    //触发 NVM 写入操作。

    Wire.beginTransmission(I2C_ADDR_BROADCAST);
    Wire.WRITE (BYTE (0xD3));// 触发寄存器
    Wire.write (byte (0x00));//  
    Wire.write (byte (0x10));// 将 NVM_PROG 设置为0b1
    wire.endTransmission ();//停止传输  


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

    您好 Katlynne、

    感谢您的回复。

    是的、它提供610Hz 方波和低、中、高优先级报警。

    还有一个问题、医用警报是否仅包含1个频率?

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

    Deepak、您好!

    我从标题为 "揭秘医用警报设计"的博客中截取了此屏幕截图、第1部分:IEC60601-1-8标准要求 

    只要频率符合上述 IEC 标准、就可以更改频率。  

    我们的应用手册《 揭秘采用智能 DAC 的医用警报设计》中提供了可视警报的原理图。 建议可视警报使用不同于听觉警报电路的 DAC53701。 如果 LED 为高功率、DAC 输出可以驱动 LED 驱动器的电流限制引脚。  

    最棒的

    Katlynne Jones

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

    感谢您的回复、

    如何更改  

     INTERBURST_TIME  

    PULSE_OFF_TIME

     PULSE_ON_TIME

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

    Deepak、您好!

    可以在 CONFIG2寄存器(0xD2)中更改这些值。 时序将特定于在 GPIO_CONFIG 字段中启用的警报类型:  

    根据所需的时间修改写入 CONFIG2寄存器的数据。 此示例将低优先级报警的设置设为最大值:  

    //选项-1:配置 DAC2 GPIO 以触发具有最长时间设置和触发的低优先级警报

    //将 CONFIG2寄存器中的 GPI_CONFIG 设置为110b、 将 INTERBURST_TIME、 PULSE_OFF_TIME、 PULSE_ON_TIME 设置为0b11

    Wire.beginTransmission(I2C_ADDR_DAC2);
    Wire.WRITE (BYTE (0xD2));// CONFIG2寄存器
    Wire.write (byte (0x30));// 将 GPIO_config 设置为0b110
    Wire.write (byte (0x1F));//  将 INTERBURST_TIME、 PULSE_OFF_TIME、 PULSE_ON_TIME 设置为0b11
    wire.endTransmission ();//停止传输

    最棒的

    Katlynne Jones