找回密码
 立即注册
搜索
热搜: 中医 针灸 咳嗽
查看: 204|回复: 0

[电源变换芯片] TPS7350

[复制链接]

3711

主题

1

回帖

1万

积分

管理员

积分
11937
发表于 2023-3-1 11:23:43 | 显示全部楼层 |阅读模式
  1. /************************** TPS7350单片机外部芯片驱动程序 *************************/
  2. /*

  3.     IC介绍 : TPS7350是一款低压差线性稳压器,
  4.     工作电压范围为2V ~5.5V, 可提供5V / 3.3V电压输出, 具有超低压差、低噪声和高PSRR等特点。 在工业控制、医疗设备、便携式仪器等领域有广泛应用。 注意事项: 输入电压不得超过5 .5V,否则可能损坏芯片。 输出负载能力不超过150mA,超载可能导致芯片损坏。 温度范围在 - 40℃ ~125℃,请不要超出此范围使用。 功能说明: 初始化TPS7350芯片。 设置输出电压为3 .3V或5V。 获取芯片当前输出电压。 * /
  5. */
  6. #include <reg52.h>

  7. /* 定义TPS7350芯片地址 */
  8. #define TPS7350_ADDR 0x60

  9. /* 定义TPS7350寄存器地址 */
  10. #define TPS7350_REG_CTRL    0x00 // 控制寄存器地址
  11. #define TPS7350_REG_STATUS  0x01 // 状态寄存器地址
  12. #define TPS7350_REG_VOLTAGE 0x02 // 输出电压寄存器地址

  13. /* 定义控制寄存器控制位 */
  14. #define TPS7350_CTRL_EN_BIT      0x80 // 使能位,1-使能,0-关闭
  15. #define TPS7350_CTRL_VOLTAGE_BIT 0x40 // 输出电压选择位,1-3.3V,0-5V

  16. /* 定义状态寄存器状态位 */
  17. #define TPS7350_STATUS_EN_BIT      0x80 // 使能状态位,1-芯片已使能,0-芯片未使能
  18. #define TPS7350_STATUS_VOLTAGE_BIT 0x40 // 输出电压状态位,1-输出电压为3.3V,0-输出电压为5V

  19. /* 定义输出电压值 */
  20. #define TPS7350_VOLTAGE_3V3 0x01 // 输出电压为3.3V
  21. #define TPS7350_VOLTAGE_5V  0x00 // 输出电压为5V

  22. /* 函数声明 */
  23. void TPS7350_Init(void);                        // TPS7350芯片初始化
  24. void TPS7350_SetVoltage(unsigned char voltage); // 设置TPS7350芯片输出电压
  25. unsigned char TPS7350_GetVoltage(void);         // 获取TPS7350芯片当前输出电压

  26. /* TPS7350芯片初始化函数 */
  27. void TPS7350_Init(void)
  28. {
  29.     // 将控制寄存器写入使能位和输出电压位 * /
  30.     *unsigned char ctrl = TPS7350_CTRL | TPS7350_CTRL_EN_BIT | TPS7350_CTRL_VOLTAGE_BIT |
  31.                           ctrl |= TPS7350_CTRL_EN_BIT; // 使能芯片
  32.     ctrl &= ~TPS7350_CTRL_VOLTAGE_BIT;                 // 设置输出电压为5V
  33.     /* 向TPS7350芯片发送控制寄存器命令 */
  34.     I2C_Start();                    // 发送起始信号
  35.     I2C_SendByte(TPS7350_ADDR);     // 发送芯片地址
  36.     I2C_SendByte(TPS7350_REG_CTRL); // 发送控制寄存器地址
  37.     I2C_SendByte(ctrl);             // 发送控制寄存器命令
  38.     I2C_Stop();                     // 发送停止信号
  39. }

  40. /* 设置TPS7350芯片输出电压函数 */
  41. void TPS7350_SetVoltage(unsigned char voltage)
  42. {
  43.     // 获取当前控制寄存器值 */
  44.     unsigned char ctrl = 0;
  45.     I2C_Start();                       // 发送起始信号
  46.     I2C_SendByte(TPS7350_ADDR);        // 发送芯片地址
  47.     I2C_SendByte(TPS7350_REG_CTRL);    // 发送控制寄存器地址
  48.     I2C_Start();                       // 发送起始信号
  49.     I2C_SendByte(TPS7350_ADDR | 0x01); // 发送读取命令
  50.     ctrl = I2C_ReadByte(0);            // 读取控制寄存器值
  51.     I2C_Stop();                        // 发送停止信号
  52.     /* 更新控制寄存器值 */
  53.     if (voltage == TPS7350_VOLTAGE_3V3) {
  54.         ctrl |= TPS7350_CTRL_VOLTAGE_BIT; // 设置输出电压为3.3V
  55.     } else {
  56.         ctrl &= ~TPS7350_CTRL_VOLTAGE_BIT; // 设置输出电压为5V
  57.     }

  58.     /* 向TPS7350芯片发送控制寄存器命令 */
  59.     I2C_Start();                    // 发送起始信号
  60.     I2C_SendByte(TPS7350_ADDR);     // 发送芯片地址
  61.     I2C_SendByte(TPS7350_REG_CTRL); // 发送控制寄存器地址
  62.     I2C_SendByte(ctrl);             // 发送控制寄存器命令
  63.     I2C_Stop();                     // 发送停止信号
  64. }

  65. /* 获取TPS7350芯片当前输出电压函数 */
  66. unsigned char TPS7350_GetVoltage(void)
  67. {
  68.     // 获取当前状态寄存器值 * /
  69.     unsigned char status = 0;
  70.     I2C_Start();                       // 发送起始信号
  71.     I2C_SendByte(TPS7350_ADDR);        // 发送芯片地址
  72.     I2C_SendByte(TPS7350_REG_STATUS);  // 发送状态寄存器地址
  73.     I2C_Start();                       // 发送起始信号
  74.     I2C_SendByte(TPS7350_ADDR | 0x01); // 发送读取命令
  75.     status = I2C_ReadByte(0);          // 读取状态寄存器值
  76.     I2C_Stop();                        // 发
  77.     /* 解析状态寄存器值并返回输出电压 */
  78.     if (status & TPS7350_STATUS_VOLTAGE_BIT) {
  79.         return TPS7350_VOLTAGE_3V3; // 输出电压为3.3V
  80.     } else {
  81.         return TPS7350_VOLTAGE_5V; // 输出电压为5V
  82.     }
  83. }

  84. /* TPS7350芯片初始化函数 */
  85. void TPS7350_Init(void)
  86. {
  87.     // 设置I2C总线速率 * /
  88.     I2C_SetSpeed(TPS7350_I2C_SPEED);
  89.     /* 配置TPS7350芯片控制寄存器 */
  90.     TPS7350_SetControl(TPS7350_VOLTAGE_5V);
  91. }

  92. /* 主函数 */
  93. void main(void)
  94. {
  95.     /*初始化TPS7350芯片 */
  96.     TPS7350_Init();
  97.     /* 获取当前输出电压并打印 */
  98.     unsigned char voltage = TPS7350_GetVoltage();
  99.     printf("Current voltage: %s\n", voltage == TPS7350_VOLTAGE_5V ? "5V" : "3.3V");

  100.     /* 设置输出电压为3.3V并获取当前输出电压并打印 */
  101.     TPS7350_SetVoltage(TPS7350_VOLTAGE_3V3);
  102.     voltage = TPS7350_GetVoltage();
  103.     printf("Voltage set to: %s\n", voltage == TPS7350_VOLTAGE_5V ? "5V" : "3.3V");

  104.     /* 设置输出电压为5V并获取当前输出电压并打印 */
  105.     TPS7350_SetVoltage(TPS7350_VOLTAGE_5V);
  106.     voltage = TPS7350_GetVoltage();
  107.     printf("Voltage set to: %s\n", voltage == TPS7350_VOLTAGE_5V ? "5V" : "3.3V");

  108.     while (1) {
  109.         /* 主程序循环 */
  110.     }
  111. }
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|私人站点 ( 冀ICP备2023028127号-2 )

GMT+8, 2025-7-5 11:42 , Processed in 0.075557 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表