【经验】蓝牙SoC芯片EFR32BG22如何增加SPI FLASH型号?
SILICON LABS的蓝牙SoC芯片EFR32BG22在做OTA时需要使用外部的SPI FLASH做OTA的存储,但在Simplicty Studio软件中提供的BootLoader程序中只提供了常用的FLASH型号的支持,那对于没有在支持列表中的器件要如何添加到程序中呢?下面我们就分析一下Bootloader的程序及增加SPI FLASH型号的方法。
首先,我们看一下在SPI FLASH BootLoader程序中支持的器件列表,在这个项目的Plugin-spi flash storage,provides API: storage中我们可以查到所有支持的器件型号,常见的有ATMEL、ISSI、WINDBOND的一些型号。
为了方便增加没有在支持列表中的器件,我们可以先选择一个与要添加的器件容量相同的器件产生源代码,比如,我们要添加国产博雅科技的BY25Q80,我们先选择类似的M25P80器件先产生代码。
接下来我们要将SDK中的btl_storage_spiflash_configs.h、btl_storage_spiflash.c、btl_storage_spiflash.h三个文件复制到项目中,这几个文件我们都要做相应的修改。
在btl_storage_spiflash_configs.h文件中我们要先确定程序定义的FLASH相关操作命令与新增加器件的命令是否一致,如果有不同,需要修改下面的命令。通常这些命令是相同的,不需要我们去做修改。BY25Q80的命令就与下面的命令完全一致。
#define CMD_WRITE_ENABLE (0x06)
#define CMD_WRITE_DISABLE (0x04)
#define CMD_READ_STATUS (0x05)
#define CMD_WRITE_STATUS (0x01)
#define CMD_READ_DATA (0x03)
#define CMD_PAGE_PROG (0x02)
#define CMD_ERASE_SECTOR (0x20)
#define CMD_ERASE_BLOCK (0xD8)
#define CMD_ERASE_CHIP (0xC7)
#define CMD_POWER_DOWN (0xB9)
#define CMD_POWER_UP (0xAB)
#define CMD_JEDEC_ID (0x9F)
#define CMD_UNIQUE_ID (0x4B)
接下来我们要在程序中定义MFG_ID与DEVICE_ID,这个每一个器件都是不同,从器件的手册中可以找到,将下面的定义加到程序中:
#define MFG_ID_PY (0x68)
#define DEVICE_ID_PY_8M (0x4014)
另外,需要加入器件的描述信息以便于程序识别,这个可以复制我们第一步选择的器件的资料来写就可以,
static const BootloaderStorageImplementationInformation_t BY8MInfo = {
BOOTLOADER_STORAGE_IMPL_INFO_VERSION,
(BOOTLOADER_STORAGE_IMPL_CAPABILITY_ERASE_SUPPORTED
| BOOTLOADER_STORAGE_IMPL_CAPABILITY_PAGE_ERASE_REQUIRED),
TIMING_ERASE_SECTOR_MAX_MS,
TIMING_ERASE_MACRONIX_8M_MAX_MS,
DEVICE_SECTOR_SIZE,
DEVICE_SIZE_8M,
"BY25Q80",
DEVICE_WORD_SIZE // word size in bytes
};
这里要注意SECTOR的擦除时间与整片的擦除时间,可以设置的大一些,但不要设置小了,设置小了可能会引起擦除没有结束就招待其它命令。
在btl_storage_spiflash.h文件中增加器件的枚举信息
typedef enum {
UNKNOWN_DEVICE,
BY_8M_DEVICE,
} StorageSpiflashDevice_t;
在btl_storage_spiflash.c文件中有三个地方要修改,
1.在读取DEVICETYPE函数中要加入新增加器件的ID识别。
static StorageSpiflashDevice_t getDeviceType(void)
{
switch (mfgId) {
case MFG_ID_BY:
switch (deviceId) {
case DEVICE_ID_PY_8M:
return BY_8M_DEVICE;
……
2.在读取存储信息时要加入新增加的器件的信息返回
const BootloaderStorageImplementationInformation_t * getDeviceInfo(void)
{
waitUntilNotBusy();
switch (getDeviceType()) {
case BY_8M_DEVICE: //add BY25Q80BSS 2020/12/14
return &BY8MInfo;
3.在读取存储器件的容量时要返回正确的值
static uint32_t getDeviceSize(StorageSpiflashDevice_t *pDeviceType)
{
case SPANSION_8M_DEVICE:
case WINBOND_8M_DEVICE:
case ATMEL_8M_DEVICE:
case MACRONIX_8M_DEVICE:
case MACRONIX_8M_LP_DEVICE:
case NUMONYX_8M_DEVICE:
case BY_8M_DEVICE:
return DEVICE_SIZE_8M;
程序的其它地方不需要做修改,这样新的器件就已经添加好了,可以直接做OTA测试。
- |
- +1 赞 0
- 收藏
- 评论 1
本文由John提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】芯科科技EFR32BG22系列蓝牙SOC修改自定义广播包的思路与具体实例
在蓝牙的实际应用中,往往需要自定义的蓝牙广播包来适应不同的应用环境,本文主要介绍基于SILICON LABS的EFR32BG22蓝牙SOC实现自定义广播数据包的方法。
【经验】STUDIO V5中蓝牙SoC EFR32BG22添加串口LOG打印的方法
在调试Silicon Labs蓝牙SoC EFR32BG22时,一般需要添加LOG打印信息,通过串口的方式来判断代码运行是否正常。由于使用RTT功能在打印信息时无法再次在线调试和代码下载,所以直接采用串口的方式更加便捷。
【经验】Silicon Labs的蓝牙SoC EFR32BG22如何进行在线的OTA升级?
Silicon Labs的蓝牙SOC EFR32BG目前已经能够支持到蓝牙5.2,工艺升级后的EFR32BG22的功耗能够达到接收4.1mA,0dbm发射功耗3.6mA,休眠功耗低至1.4uA,如此低的功耗,能够大幅延长蓝牙设备的电池续航时间。本文介绍蓝牙SoC EFR32BG22如何进行在线的OTA升级。
BG24蓝牙SoC具备低功耗、小型化等特性,为CoreHW提供蓝牙RTLS的先进解决方案
Silicon Labs(亦称“芯科科技”)的BG24蓝牙SoC具备低功耗、小型化等特性,并支持蓝牙定位技术包括蓝牙到达角(AoA)和蓝牙信道探测(Channel Sounding),为CoreHW公司提供了最先进的实时定位服务(RTLS) 解决方案,以开发出创新的CoreTag和CoreLocator定位应用产品。
【应用】EFR32BG22蓝牙SoC用做CGM连续血糖仪主控,单芯片集成MCU和蓝牙5.2
CGM连续血糖仪为了用户体验更好,要做到小而轻,续航时间长,可以通过手机蓝牙连接获取血糖测量数据。Silicon Labs的蓝牙SoC EFR32BG22在单芯片中集成了MCU和蓝牙5.2,可以作为CGM的主控芯片并实现蓝牙数据收发,有丰富的外设。
Silicon Labs EFR32BG21 蓝牙SoC RCP模式测试-扫描设备
本文介绍测试EFR32BG21 蓝牙RCP模式工作在主模式,用于扫描蓝牙从设备,建立蓝牙连接和收发数据。首先需要准备一台电脑并且已经安装好了linux系统。也可以是windows系统下安装的linux虚拟机。并且已经安装好了蓝牙BlueZ协议栈。
【经验】Silicon Labs蓝牙Soc芯片EFR32BG22的蓝牙广播功率设置及注意事项
用户在使用Silicon Labs的蓝牙Soc芯片EFR32BG22实现蓝牙广播功能时,在不同的应用场景中要设置广播的发射功率,有的是为了降低产品的功耗,有的是为了增加或缩短通信的距离。那要如何设置广播时的功耗以及在设置时有哪些需要注意的事项?
【经验】EFR32BG22系列蓝牙SOC电池电压与VDD供电电压检测ADC的方法
EFR32BG22作为低功耗蓝牙SOC方案,经常应用于电池供电的方案中,一般采用内部的ADC作为采集通道,内部的输入源作为输入接口,来测试VDD供电电压。本文将讲解电池电压与VDD供电电压检测ADC的方法。
Silicon Labs EFR32BG21 蓝牙SoC RCP模式测试-广播设备
本文介绍测试EFR32BG21 蓝牙RCP模式工作在从模式,BG21 RCP会发出蓝牙广播,被手机的蓝牙扫描,连接。首先需要准备一台电脑并且已经安装好了linux系统。也可以是windows系统下安装的linux虚拟机。并且已经安装好了蓝牙BlueZ协议栈。
【经验】EFR32BG系列蓝牙SoC之低功耗测试操作指导
很多的蓝牙设备都是电池供电的,因此对蓝牙SoC功耗水平测试与评估就非常有必要。Silicon Labs公司提供的蓝牙评估板底板,都带有电流功耗测试功能,搭配Simplicity studio v4开发平台的energy profile功耗测试上位机,非常容易测试出EFR32BG系列蓝牙SoC的功耗水平。我们详细介绍功耗测试需要的软件和硬件以及测试操作。本文就将具体进行说明。
【经验】芯科科技EFR32BG22系列蓝牙SOC低功耗优化的相关配置
本文主要介绍Silicon Labs(芯科科技)EFR32BG22系列蓝牙SOC目前所有的低功耗优化的相关配置,实现目标: VDD=3V,VSCALE0=0.9V,温度25℃,EM2模式下深度休眠为1.4μA。
EFR32BG2x系列蓝牙SoC如何配置外接FEM引脚,驱动FEM?
Silicon Labs公司的EFR32BG21或者EFR32BG2x系列的蓝牙SoC最大可以支持20dBm的发射功率,以及非常优秀的接收灵敏度。本文以BG21评估板SLWRB4181A,基于GSDK 4.4.1,介绍如何快速配置BG21实现FEM适配。
【经验】蓝牙SoC EFR32BG22增加Button功能并发送Notify数据包的方法
本文以Silicon Labs蓝牙SoC EFR32BG22的Thunderboard模块为例,介绍如何使用Simplicity Studio v5软件在蓝牙soc_empty工程中添加Button功能,并向手机发送Notify数据包的方法。
【经验】无线蓝牙SoC EFR32BG22用户自定义数据存取接口NVM使用指导
在使用EFR32BG22开发应用时,大部分应用需要保存一些参数,很多开发者不清楚BG22对数据进行存取的接口是哪个,本文将介绍Silicon Labs无线蓝牙SoC EFR32BG22上对数据进行存取的接口——NVM的使用。
【经验】Silicon Labs蓝牙SoC在开启了串口后,如何降低功耗?
在调试Silicon Labs的蓝牙SoC时,我们需要打开串口日志输出以方便调试,但是在添加了Log和IO Stream:USART组件后,可以看到日志可以输出了,但是随之EM2休眠功耗却降不下去了,这是由于添加了串口后,默认串口在EM2下是开启的,导致EM2下功耗会比较高,本文将以EFR32BG27为例,指导如何在添加了串口后降低串口功耗。
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 103,878
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
提供语音芯片、MP3芯片、录音芯片、音频蓝牙芯片等IC定制,语音时长:40秒~3小时(外挂flash),可以外挂TF卡或U盘扩容。
最小起订量: 1pcs 提交需求>
提供蓝牙BLE芯片协议、蓝牙模块、蓝牙成品测试认证服务;测试内容分Host主机层,Controller控制器层,Profile应用层测试。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论