本文章用于记录Telink芯片的一些硬件bug与软件bug,因为Telink没有系统性的提供芯片的勘误手册,芯片的问题也只是在用户手册的各个角落中简单的提及,要不就是遇到问题问FAE才会有结果.故开一个文章做下记录:

硬件:

ADC:

  1. 8x5x系列的VBAT Channel不能使用.
  2. ADC 状态机包括 Left,Right,Misc等几个channel.这些state channel无法同时工作,Telink规定:ADC状态机中的channel必须独独立运行,不能同时工作.

Flash:

  1. 如果使用启动地址为0和0x20000交替OTA升级,固件大小不能超过124KB(高地址空间最后4K都不能使用).

GPIO:

  1. deepsleep retention期间的GPIO状态控制不要使用上拉1M(上拉电压可能会比供电电压VCC低一些).
  2. 上拉10K的控制中不要使用PC0~PC7的上拉10K(在deepsleep retention wake_up时会有短时间的抖动,产生毛刺),其他GPIO上拉10K都是可以的.
  3. 需要翻一下对应芯片的datasheet,在datasheet里一般有一张表格,名称类似:GPIO Pin Mux of 芯片型号如果在表格里对应的IO口的Default功能不是GPIO,那使用的时候需要小心,可能会在唤醒时有毛刺.

软件:

BLE:

  1. 1.如需同时使用扩展广播跟普通广播,则需要在初始化以及配置时使用扩展广播demo的代码来配置,如需发普通广播,就调用blc_ll_setExtAdvParam(),把第二个参数adv_evt_prop的值改为ADV_EVT_PROP_LEGACY_CONNECTABLE_SCANNABLE_UNDIRECTED即可,如需切回扩展广播就再设置一次改为ADV_EVT_PROP_EXTENDED_CONNECTABLE_UNDIRECTED.
  2. 2.Telink的825x之前换过一次内部Flash的物料,导入了恒烁的Flash,需要及时更新SDK以及SDK补丁来确保SDK支持新的Flash,另外在OTA前需要加一句代码(老芯片加了这个代码也不影响):
analog_write(0xc,(analog_read(0xc)&0xf8) | 0x7);   //DCDC提高到1.9V

时钟:

  1. 当deepsleep retention状态持续时间超过8S以上,唤醒后系统时钟tick(clocktime)就不会做恢复处理了.(恢复处理是指正常情况下系统时钟tick是按16MHz去跑的,但是deepsleep retention的时候高速时钟不工作,只有32K的低速时钟工作,故在唤醒时会根据32K时钟工作时的tick计数来换算到系统时钟tick上)

一个电子工程师的自我修养