尊敬的 TI 团队:
有人能帮我通过此智能 DAC 生成医用警报吗? 我尝试了很多、但无法使其正常工作。
请提供此芯片配置的 I2C 代码、以便使用 GPI 引脚生成医疗视觉和音频警报。
另外、请给出可用于此目的的电路图。
谢谢、此致、
Deepak Kumar、
嵌入式设计工程师、
Noccarc Robotics Pvt Ltd.
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.
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 ();//停止传输
Deepak、您好!
我从标题为 "揭秘医用警报设计"的博客中截取了此屏幕截图、第1部分:IEC60601-1-8标准要求
只要频率符合上述 IEC 标准、就可以更改频率。
我们的应用手册《 揭秘采用智能 DAC 的医用警报设计》中提供了可视警报的原理图。 建议可视警报使用不同于听觉警报电路的 DAC53701。 如果 LED 为高功率、DAC 输出可以驱动 LED 驱动器的电流限制引脚。
最棒的
Katlynne Jones
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