Bike 硬件设计问题记录

2016-09-29

原理图,版本V1.1中的flash设计线路问题,SPI的miso和mosi接错

2016-09-15

更改自行车主控制芯片以及LDO,

使用STM32L151RCT6,LDO更换为R170N331D

造成的问题:

  1. 原来使用的是Stop模式,现在改为Standby模式,逻辑就会发生变化;

  2. 同时STM32L和STM32F的库函数代码风格不同,需要移植;

  3. 调试过程中发现STM32L的SPI1和SPI2使用的多事AF5,产生冲突。解决方法:其中一个使用模拟SPI的方式进行。

系统功耗问题

1、3.3V系统的功耗;外部IO的上拉或是下拉对其影响

2、电源LDO的自身功耗;目前使用SPX3819,在负载为12ua的时候,输入端电流65uA,LDO信号

stm32f1的低功耗问题:

From datasheet:

stop mode下的调试接口使能与否

voltage regulator

在进入stop模式前最好设定好外部IO的状态,因为它会保持io原来的state

wake up from stop , 工作在HSI时钟,8MHz

所以醒来后,需要设定相关的时钟,或是从新配置或是复位操作。

  • 出现的问题是:

WFE可以使用,唤醒stop mode,但是WFI不可以唤醒 stop mode。

原因不是配置nvic和exti的问题,而是其它部分的影响。

  1. 程序中systick的影响,在进入stop模式前需要关闭systick,否则stop容易被唤醒。

  2. 电路中模块的影响,从stop 模式唤醒的时候,需要一个startup delay时间,如果过早开启外设,比如init_do()之后init_ble();或者init_tts()。

那么ram的内容将不会被保存,清零操作。

      

      退出STOP模式时,注意外部大电流的外设影响。唤醒后,有个startup delay时间,如果早初始化BLE或是TTS外设。ram的东西就会丢失,相当于复位似的。

     

系统复位

1、外部硬件复位

2、上电复位

3、WWDG reset

4、IWDG reset

5、low power management reset

6、soft reset----重点

http://bbs.21ic.com/icview-382463-1-1.html

Cortex-M3 处理器含 3 个复位输入。如表 6-3 所示。

表 6-3  复位输入 

复位输入  描述 

PORESETn  复位整个处理器系统,JTAG-DP除外 

SYSRESETn  复位整个处理器系统,NVIC 中的调试逻辑、FPB、DWT、ITM以及AHB-AP除外 

nTRST  复位JTAG-DP 

注: 

nTRST 复位 JTAG-DP。如果设备不含 JTAG-DP,那么必须断开(tied off)该复位端。

6.3   Cortex-M3 复位方式 

通过处理器设计中出现的复位信号,用户可以单独对设计中的不同元件进行复位。表

6-4 列出了这些复位信号和他们的组合形式,以及可能的应用。 

表 6-4  复位方式 

复位方式  SYSRESETn  nTRST  PORESETn  应用 

上电复位  x 0 0  接通电源后复位,复位整个系统。冷复位 

系统复位  0 x 1  复位处理器内核和系统元件,调试元件除外

JTAG-DP复位  1 0 1  复位JTAG-DP 逻辑 

注: 

PORESETn复位 SYSRESETn逻辑的超集(superset) 。 

我是用的软复位

指令:*((u32 *)0xE000ED0C)=0x05fa0004;----用这句话,我试用了一下可以实现重启功能

现在就是执行上述指令时,MCU就挂了。除非再次上电复位才能成功。

http://blog.csdn.net/huangtonggao/article/details/6446208--汇编嵌入

http://www.51hei.com/mcu/2758.html

这个里面主要是说IO的设置对stop下的电流影响,但是我实际测试过,好像不是这样的配置 ---why?

个人测试后,觉得设置成模拟输入AIN方式。

低功耗模式下关闭调试接口---debug port disabeled

设置如下方式:

21ic问题咨询  eeworld提问

遇到两个问题:

1、进入后功耗做的不够低,490ua;

2、无法中断唤醒了。---程序中函数处理问题,中断。

2016-09-06

系统初始化后进入stop模式,功耗150uA,但是若退出stop,执行程序后,再进入stop模式,功耗将变大,800uA.(降至600uA)-------为什么呢?

初始化的时候开启了ADC功能,在进入stop模式时,需要关闭ADC功能,注意不要先关闭ADC时钟在执行adc_on disable,否则disable adc_on指令无效。

     增加指令:

---     ADC_Cmd(ADC1, DISABLE);    //使能指定的ADC1   

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, DISABLE );

---

xc6220 1A LDO,

问题:进入低功耗,500uA的电流,如果在while(1)中做相关逻辑业务处理,出现此种高功耗,但是如果直接进入低功耗,则不会出现这个问题。如果直接进入低功耗模式,系统整体功耗,69uA.

下图是通过不同方式进入低功耗mode,系统功耗有差异。

原因:

在中断函数中调用的函数Stop_Mode( ),出现功耗较大。

修改为使用flag方式,在main函数中判断wakeupflag来进入和唤醒stop_mode( ),功耗测试正常。


问题:

     进入stop模式后,唤醒的方式,有两种WFI和WFE,目前使用WFI方式唤醒有问题,无法唤醒,但是使用WFE方式唤醒可以。

解决:

     systick中断影响,另外就是中断处理函数不应该太长。


问题:

     如果电机转动卡住,此时播放语音失败。

处理方式:

     需要将电机关闭,待语音播放完毕后,再重新开启电机转动

原因分析:

     电源提供的电流不足,导致语音播放失败。


问题:

     系统唤醒后,ram内存信息初始化数据,不是保留进入stop模式前的值,datasheet上指明preserve ram内容。

原因:

     从stop唤醒后,系统启动未稳定,如果此时执行大电流消耗的设备,比如ble以及tts,会导致reset的发生。

解决方法:

     外部大电流消耗的设备在从stop换醒后,延迟一段时间后,初始化外设。


-----未彻底解决的问题:

     唤醒后,将所有的外设都打开,刷卡失败,或是tts播放失败,

解决方法:

     分步骤初始化,需要的先初始化,不用到的时候,关闭该外部设备。主要的是Bluetooth,NRF24L01,以及TTS SYN6658.


----未彻底解决问题:

     电机卡住


问题

     偶尔发生卡片刷卡失败情况


问题;

      TTS的ready信号,并不能表示播放结束,只是转换结束而已。所以tts操作需要根据播放声音长短后来关闭电源,否则会发生播放不完或是不能播放的情况。

解决方法:

     增加检查tts是否ready的command。并且在播放结束时,等待本次播放ready,为下一次做准备。


问题:

     长时间不使用,再次使用,有时候不能触发唤醒,或者是触发唤醒后,tts不播报语音。

---tts发出语音信息,可以量测到语音信号,但是pa没有正确驱动喇叭发声。


问题:从sotp mode唤醒后,电源vcc,出现一个下降的overshoot。启动出现问题。这个和初始化外部设备的多少有关系,比如唤醒后不初始化ble或者nrf24l01,则不会出现下降的overshoot


程序优化:

1、bikeid[4]使用uint32_t类型,----

2、stationid[4]使用uint32_t类型,---


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值