博主 主要纪录自己常用的几种模式,以及自己觉得需要注意的点,具体的请看数据手册,且大部分都是从数据手册中截取。
(1)烧写模式:VPRO管脚外接EEPROM烧写电压V PRO ,且延时10mS,SH367309进入烧写模式,关闭充放电MOSFET及内置保护功能模块。此时其他设备可通过TWI接口读/写内置EEPROM,且内置EEPROM仅在烧写模式下方可进行写操作。
(2)仓运模式:SHIP管脚外接低电平V L-SHIP ,SH367309进入仓运模式:关闭充放电MOSFET,同时关闭所有功能模块;连接充电器无任何动作。SHIP管脚外接高电平V H-SHIP ,才可退出仓运模式,产生硬件复位
(3)硬件复位方式包括上电复位、LVR复位、退出仓运模式以及退出PowerDown状态。软件复位SH367309工作在采集模式,当TWI模块接收到MCU发送的软件复位指令后,发生软件复位,进入WarmUp状态。(注释: WarmUp 结束后, 8 分钟内不检测断线和二次过充电保护状态。)
(4)SH367309的CTL管脚可控制充放电MOSFET
(5)MODE管脚为SH367309 采集模式和保护模式选择端。SH367309处于采集模式下,ALARM管脚为对外通讯管脚;处于保护模式下,ALARM管脚为高阻态。
(6)STA 检测定义为系统内部检测电路( TWI 通讯的起始信号),主要用于采集模式低功耗唤醒使用。其中,充放电电流检测电压阈值为 VCD ,如果超过 VCD ,且维持充放电电流检测延时 tCD 以上,则置位 WAKE_** ,产生 ALARM 中断(一个下降沿,低电平时间1ms)。
(7)EEPROM的Data Block(0x00~0x19),RAM的ADC Data、System Area、Configuration Area(0x40~0x72)
(8)TWI通讯中,SH367309作为从机,其固定地址是 0x34( | )最低位0写1读
总结:
写eeprom寄存器内容:
手册规定写eeprom的内容必须在烧写模式下,所以先打开烧写模式
写eeprom寄存器的数据
关闭烧写模式
SH367309 接收到以下指令协议后,START SLA+W Ack 0xEA STOP,会执行软件复位操作(如果EEPROM寄存器被改写,需执行软件复位操作才有效)。
读eeprom和ram寄存器的内容:
将alarm引脚设置为外部中断,下降沿触发(alarm产生的是一个下降沿中断)
如果产生了alarm中断,即TWI的起始信号,那么可以开始进行读eeprom和ram寄存器
举例说明
rcu_periph_clock_enable(RCU_AF);
gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_0); //ALARM检测口配置为外部中断
nvic_irq_enable(EXTI0_IRQn, 2U, 0U); //使能外部中断0线程
gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOA, GPIO_PIN_SOURCE_0);//配置外部中断对应端口
exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_FALLING); //外部中断0,下降沿触发
exti_interrupt_flag_clear(EXTI_0); //清外部中断0标志
void EXTI0_IRQHandler(void)
{
if(RESET != exti_interrupt_flag_get(EXTI_0))
{
exti_interrupt_flag_clear(EXTI_0);
FLAG=1;//产生了ALARM下降沿,即TWI可以开始通信
}
}
配置ALARM引脚为外部中断,如果产生了ALARM外部中断,即可以开始通信
if(FLAG==1)
{
FLAG=0;
//读数据
}
写ram寄存器的内容:
将alarm引脚设置为外部中断,下降沿触发(alarm产生的是一个下降沿中断)
如果产生了alarm中断,即TWI的起始信号,那么可以开始进行写ram寄存器
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_61973119/article/details/135076606
|