基于LTC2315-12的电压采集板驱动设计

最近在项目中,用到了LTC2315-12采集外部电压。原理图参考了数据手册中的最小系统例子。而芯片中的cs片选,sck时钟,sdo数据输出引脚连接到stm32f4最小系统,以获取外部输入的电压。
在这里插入图片描述
驱动采用了模拟SPI。由于LTC2315-12不需要写操作,即保持片选,则一直向外发送数据,因此只需要硬件模拟SPI读函数即可,硬件模拟SPI及数据解析相关函数如下:

 #define SPI_SCK_1    GPIO_SetBits(GPIOA, GPIO_Pin_9)            
 #define SPI_SCK_0    GPIO_ResetBits(GPIOA, GPIO_Pin_9)       
 #define SPI_READ_MISO    GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_10)    
 #define SPI1_CS   PFout(9)
//初始化SPI
void SPI_Init(void)
{                         
     GPIO_InitTypeDef GPIO_InitStructure;
 
     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOF, ENABLE);    

     //CS引脚初始化
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT ; //推挽输出
     GPIO_InitStructure.GPIO_OType=GPIO_OType_pp;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
     GPIO_InitStructure.PuPd=GPIO_PuPd_DOWN;
     GPIO_Init(GPIOF, &GPIO_InitStructure);
     
     GPIO_SetBits(GPIOF, GPIO_Pin_9);
 
     //SCK引脚初始化
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT ; //推挽输出
     GPIO_InitStructure.GPIO_OType=GPIO_OType_pp;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
     GPIO_InitStructure.PuPd=GPIO_PuPd_DOWN;
     GPIO_Init(GPIOA, &GPIO_InitStructure);
     
     GPIO_ResetBits(GPIOA, GPIO_Pin_9);
     
     //MISO引脚初始化
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN ;  //浮空输入
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
     GPIO_InitStructure.PuPd=GPIO_PuPd_DOWN;
     GPIO_Init(GPIOA, &GPIO_InitStructure);    

}
 
//SPI读函数
uint16_t SPI_ReadByte(uint16_t txData)
{
     uint8_t i;
     uint16_t rxData = 0;
      
     for(i = 0; i < 14; i++)
     {
         SPI_SCK_1;
         //delay_us(1);
         SPI_SCK_0;
         //delay_us(1);
         //数据接收
         rxData <<= 1;
         if(SPI_READ_MISO)
         {
             rxData |= 0x0001;
         }
     }
    //SPI_SCK_0;
    return rxData;
}
 //LTC2315-12非连续采样只需要14个时钟,
 //则返回的数据需要右移2位。 
float data_analyze(u16 data)
{
  data>>2;
  return (float)(data*(4.096/(4095*1.0)));
}

获取并解析数据采用定时器定时获取的方式,即每隔50us获取一拍数据,根据数据手册中的不连续获取数据的时序图,获取一拍LTC2315-12的数据,需要先拉低片选CS,随后硬件产生14个SCK时钟信号,SDO引脚向外更新14位数据,即STM32F4的输入引脚获取一拍数据,最后拉高片选。实际调试中,遇到了返回的电压数据波动较大的情况,最后分析的原因是STM32F4芯片的输入输出引脚需要下拉,且后端不要连接电路,则避免了信号的相互影响。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
基于LTC6803-3的超级电容器组管理系统旨在有效地监控和管理超级电容器组,以提高其性能和寿命。LTC6803-3是一款高精度、低功耗的多路电压测量芯片,具有高度一致性和可靠性。 该系统主要包括以下几个方面的功能: 1. 电压监测:通过LTC6803-3芯片,系统能够实时监测超级电容器组中各个单体电压的情况。通过准确测量和记录电压值,可以及时发现超级电容器组中存在的异常情况,比如单体电压偏差过大,从而采取相应的措施以避免超级电容器组的过放电或过充电等问题。 2. 温度监测:LTC6803-3芯片还可以监测超级电容器组中的温度。温度是影响超级电容器组性能和寿命的重要因素,超温会引发电容器串联电压不均匀,从而影响整个系统的正常运行。通过实时监测温度,可以及时发现和处理超温问题,保护超级电容器组的稳定性和安全性。 3. 平衡管理:超级电容器组中各个单体电容器的电压差异会导致能量不均衡的问题。基于LTC6803-3的管理系统可以实现对超级电容器组的动态平衡管理,通过对单体电容器之间的能量转移实现电压均衡,提高超级电容器组的整体能量利用率和寿命。 4. 故障诊断:该系统还可以进行故障诊断,通过监测和分析超级电容器组中的各项参数,及时发现故障原因,提供相关诊断信息和报警功能。这将有助于提高对超级电容器组的维护和管理效率,降低故障损失。 综上所述,基于LTC6803-3的超级电容器组管理系统可以实现对超级电容器组的全面监测和控制,从而提高其性能和寿命,保证系统的稳定运行。该系统在能源存储、交通等领域有着广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值