[学习笔记]【杰发科技AC7802x测评】之七 项目篇:基于AC7802x的智能车载氛围灯开发

 劳斯莱斯星光灯,当你惬意地坐在手工打造的真皮座椅中,目光不禁被顶篷吸引,它像一片星光闪烁的夜空。通过在不同深度和角度安装精美的光纤束实现了星光顶饰的独特效果——使光线从多个方向以不同强度射出。每颗“星星”的亮度都可以调节,以营造您所需的氛围:在放松和阅读时提供足够的亮度,或通过淡雅光线缔造一种美妙、缓和的柔光。每个星光顶饰的星座对车主来说都如此独特。 


汽车氛围灯作为一种装饰汽车和烘托气氛的产品,逐渐从高端车型向中档车型普及。目前,氛围灯的表现形式主要是单色、RGB多色、呼吸律动、音乐律动等形式。氛围灯可以提高汽车的科技感,更现代化。可以提高夜间行车的安全性,可以舒缓驾驶员的疲劳感,放松心情,让车内生活更有仪式感,营造轻松愉悦的氛围;氛围灯不同的展现形式可以提升品牌的辨识度,彰显差异性。
   基于AC7802x的智能车载氛围灯开发,车载产品不同于消费类,对可靠新要求极高,所以主控选择车规级小巧玲珑的AC7802x非常适合项目开发,2 个 UART 模块(其中1路支持Software LIN,可以驱动CAN芯片),1 个 I2C SPI 模块。
  原理图设计:
    主控AC7802x通过IIC总线与CY8CMBR3116(一款16按钮2滑块电容式触摸接近传感器),做触摸按键拓展,串口连接RS485或者CAN,LIN与车载MCU进行交互通信。RGB灯带通过三极管驱动。灯带多的话可以改成大驱动电流的专用LED驱动器件,可控硅 氮化镓,LGBT等。
   









由于项目还在交接完善中,部门代码,后续开源

//读取参数
void ReadParam(void)
{
  unsigned char buf[SYS_PARAM_EEPROM_BYTE_NUM];
  
  Stm8EepromRead(buf,SYS_PARAM_EEPROM_BYTE_NUM,0x00);
  
  if((buf[0]==0x53)&&(buf[1]==0x53))  //已经保存
  {
    SysParam.Lev = buf[2];
  }
  else
  {
    SysParam.Lev = 20;
  }
}

//写入参数
void WriteParam(void)
{
  unsigned char buf[3];
  
  buf[0] = 0x53;
  buf[1] = 0x53;
  buf[2] = SysParam.Lev;
  
  if(Stm8EepromWrite(buf,SYS_PARAM_EEPROM_BYTE_NUM,0x00) == 0x00)
    Stm8EepromWrite(buf,SYS_PARAM_EEPROM_BYTE_NUM,0x00);
}

void WatchDogInit(void)
{
  IWDG_Enable();
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//允许操作独立看门狗
  IWDG_SetPrescaler(IWDG_Prescaler_256);//看门狗预分频
  IWDG_SetReload(0xFF);//设置看门狗复位时间
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  IWDG_SetReload(0xFF);
  IWDG_Enable();//启动独立看门狗
}

void CalcPwm(void)
{
  Pwm.Time = SysParam.Lev*100/26;
  if (Pwm.Time == 100) Pwm.Time = 99;
}

//PWM功能初始化
//duty 占空比 0-100
void PwmInit(unsigned char duty)
{  
  TIM2_DeInit();
  
  duty = 100-duty;
  
  if(duty == 0)
  {
    TIM2_Cmd(DISABLE);
    GPIO_Init(PWM_GPIOx,PWM_GPIO_Pin, GPIO_MODE_OUT_PP_LOW_FAST);//关闭PWM
  }
  else
  {
    TIM2_TimeBaseInit(TIM2_PRESCALER_2, 10000-1);            //F = 16000000 / 16  T = 1 / F = 1us  1us*10000 = 10ms = 100hz
    TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, duty*100, TIM2_OCPOLARITY_LOW);    //占空比一半
    TIM2_Cmd(ENABLE);
  }
}

/*
//改变占空比
//duty 占空比 0-100
void ChangePwmDuty(unsigned char duty)
{
  TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, duty*100-1, TIM2_OCPOLARITY_HIGH);    //占空比一半
}
*/

---------------------
作者:abner_ma
链接:https://bbs.21ic.com/icview-3312540-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值