DAC SGM5355-16驱动开发笔记_sgm5255
DAC SGM5355-16驱动开发笔记
最近需要使用SGM5355芯片,网上搜了一下,没有找到相关的驱动代码,无奈之下只能自己手动编写一个简单版本,在此记录一下,相关驱动代码资源可以在文章顶部下载link。
1. 概述
SGM5355-16 是一款低功耗、单通道、16 位的电压输出型数模转换器。其工作电压范围为 2.7V 至 5.5V,其线性度通过设计得以保证。
SGM5355-16 通过使用外部参考电压来设定输出范围。它还包含一个上电复位电路,可确保 DAC 输出电压稳定在 0V,并在有效写入操作发生之前保持该电压状态。SGM5355-16 还提供了一种通过串行接口进入的关机模式,该模式可将设备的电流消耗降低至 5.5V 时的 450nA(典型值)。在正常模式下,SGM5355-16 消耗 0.27mW(典型值),而在关机模式下则低于 1μW。在正常模式下的低功耗非常适合便携式电池供电设备。
SGM5355-16 采用了一种功能强大的双线串行接口,其工作频率可达 400kHz,并且与标准的 I2C 接口兼容。
SGM5355-16 有绿色 WLCSP-0.82×1.22-6B 和 MSOP-8 两种封装形式。其工作环境温度范围为 -40℃ 至 +125℃。
2. 特征
● 电源范围:2.7V 至 5.5V
● 16 位数模转换器,设计保证了单调性
● 6LSB(典型值)相对精度
● 低功耗运行:在 2.7V 电压下典型值为 100μA
● 电源复位至零刻度
● 10μs(典型值)稳定时间
● I2C 串行接口
● 跳线式输入输出缓冲电压操作
● 二进制代码输入
● 休眠功能
● 有环保 WLCSP-0.82×1.22-6B 和 MSOP-8 封装可供选择
3. 应用
过程控制
数据采集系统
闭环伺服控制
个人计算机外围设备便携式仪器
可编程衰减器
4. 引脚配置与描述


5. 功能模块图

6. 详细描述
6.1 DAC 模块
SGM5355-16 拥有输出缓冲放大器。其输入代码为直接二进制形式,因此理想输出电压可通过以下公式计算得出:

其中:DIN = 等值十进制代码,加载至 DAC 寄存器中,其范围为 0 到 65535。
6.2 加电复位
SGM5355-16 拥有电源复位控制电路。电源接通后,数模转换器的输出电压为 0 伏。
6.3 内部参考电压
该芯片没有内部参考电压基准。
6.4 驱动开发
6.4.1 I2C 通信
SGM5355-16 具有 2 线(SCL 和 SDA)的 I2C 兼容接口。请参见图 1 以了解典型的操作流程。

本节提供了一个关于 SGM5355-16 通信的简要示例。有关更详细的说明,请参阅本数据表的后续部分。此设计所需的硬件包括:一个配置为 I2C 地址为 0001111 的 SGM5355-16(WLCSP 封装芯片的地址是固定的,MSOP 封装芯片的地址可通过 ADDR 引脚进行配置,见表 1)、一个具有 I2C 接口的微控制器、电阻、电容和串行连接器等分立元件以及电源。图 3 展示了基本的硬件配置。


6.4.2 I2C 位寄存器地址
SGM5355-16 拥有两个可通过 I2C 端口访问的寄存器。配置寄存器使用户能够更改 SGM5355-16 的工作模式。寄存器 0x00 是一个 8 位寄存器,为工作模式控制寄存器,其默认值为 0x00,更多详细信息见表 2 。表 3.0x01 这个 16 位寄存器被定义为 DAC 输出值控制寄存器,其默认值为 0x0000,更多详细信息请参见表 4。



6.4.3 I2C 写入/读取寄存器
SGM5355-16 采用从机模式工作。主设备通过 SCL 引脚提供时钟信号。
在从机传输模式下,主设备发送的第一个字节是一个 7 位的从机地址,后面跟着一个读/写位。第二个字节是位地址字节(即寄存器的地址)。请参考表 2 和表 4。主设备接下来的第三个和第四个字节是要写入第二个字节所指寄存器的字节。
请参考图 4 至图 7 中的读写操作演示时序。
所有操作都必须与 I2C 协议兼容,操作前需先发出起始信号,操作后需发出停止信号。
例如,向寄存器 0x00 写入数据会使 SGM5355-16 设备进入正常模式,请参考以下操作说明:
- 第一个字节为 0b0001100(其中前 7 位是 I2C 地址),第 8 位是读写位,目前处于低电平写入状态。
- 第二个字节,0b00000000(指向寄存器 0x00)
- 第三个字节,0b00000000(写入了值 0x00,这意味着 PD[1:0] = 00)

若要从点寄存器 0x00 读取数据,请参考以下步骤:
- 第一个字节为 0b0001100(其中前 7 位是 I2C 地址),第 8 位是读写位,目前处于低电平写入状态。
- 第二个字节,0b00000000(指向寄存器 0x00)
- 第三个字节,0b0001101(前 7 位是 I2C 地址),第 8 位是读写位,目前该位处于高电平状态,表示读取模式。
- 第四个字节,SGM5355-16 回复为 0b000000XX(即寄存器 0x00 的数据)

要将输出值 0xABCD 写入点寄存器 0x01,请按照以下步骤操作:
- 第一个字节为 0b0001100(其中前 7 位是 I2C 地址),第 8 位是读写位,目前处于低电平写入状态。
- 第二个字节,0b00000001(指向寄存器 0x01)
- 第三个字节,0xAB(高位字节为 0xAB)
- 第四个字节,0xCD(低字节为 0xCD)

要从点寄存器 0x01 中读取输出值 0xABCD,请按照以下步骤操作:
- 第一个字节为 0b0001100(其中前 7 位是 I2C 地址),第 8 位是读写位,目前处于低电平写入状态。
- 第二个字节,0b00000001(指向寄存器 0x01)
- 第三个字节,0b0001101(前 7 位是 I2C 地址),第 8 位是读写位,目前该位处于高电平状态,表示读取模式。
- 第四个字节,SGM5355-16 回复的高位字节为 0xAB(寄存器 0x01 高位字节的数据)
- 第五个字节,SGM5355-16 回复的低字节为 0xCD(寄存器 0x01 的低字节数据)



