IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> si446使用记录(四):调试遇到的问题、读取芯片版本 -> 正文阅读

[嵌入式]si446使用记录(四):调试遇到的问题、读取芯片版本

一、概述

本节记录下调试过程中遇到的问题。

二、异常发热

更换平台,飞线MCU开发板和原平台的si4463部分电路验证。上电后电流较大,从原来平台的20mA直接增加到90mA左右。
拆掉屏蔽壳,确定是PA器件在发热。查看硬件电路,分析是将GPIO0和SDN作为PA的控制管脚。根据WDS3的配置,GPIO0在发送期间为高(此时PA开启),其他时间为低(PA关闭)。
这样若si4463初始化失败,则GPIO输出电平是不可控的,为高则PA一直开启,功耗陡增。

2.1 初始化失败

si446使用记录(一)一文中提到,发送指令后要读取CTS(0xFF)。初始化中以此来判断是否失败:

int8_t siWaitForCTS(void) {
    uint8_t value_t = 0;
    uint16_t cnt = 0;

    while (value_t != 0xFF) {
        clrCSPin();
        siDelayUs(3);
        siSendByte(0x44);               // CMD_READ_CMD_BUFF,Read command buffer; send
                                        // command uint8_t
        value_t = siReadByte();         // Read command buffer; get CTS value
        siDelayUs(3);       
        setCSPin();                     // If CTS is not 0xFF, put NSS high and stay in waiting
                                        // loop
        siDelayUs(1);
        if (cnt++ > MAX_CTS_RETRY) {
            rtt_print_log("si4463 init failed\n");
            return -1;                  // Error handling; if wrong CTS reads exceeds a limit
        }
    }
    return 0;
}

调试过程中发现,初始化执行完了,没有打印si4463 init failed,但实际并没有成功。
也就是说即使si4463没有正常响应,MCU也可能也会读到0xFF。所以并不能作为初始化成功与否的判断。

2.2 获取芯片版本

为了明确初始化结果,增加一个读取si4463版本信息的函数,正好也可以作为生产检测环节的一项。
在《AN625_Si446x API Descriptions.pdf》中查找,有3.2.2. PART_INFO、3.2.3. FUNC_INFO指令:
在这里插入图片描述
在这里插入图片描述
对应增加接口:

uint8_t si446x_Get_Part_Info(void)
{
    uint8_t para_info[9];
    
    memset(para_info, 0, sizeof(para_info));
    
    abApi_Write[0] = 0x01;
    siSendData(abApi_Write, 1);
    siWaitForCTS();
    siReadResp(para_info, 9);
    siDelayUs(1);
    
    si4463_debug("si446x_Get_Part_Info:");          // FF  22  44  63  00  86  00  00  06  
    for(uint8_t i = 0; i < 9; i++)
    {
        si4463_debug("%02x  ", para_info[i]);
    }
    si4463_debug("\n");
    
    if((para_info[2] != 0x44) && (para_info[3] != 0x63))
    {
        return 0xFF;
    }
    return 0;
}


uint8_t si446x_Get_Func_Info(void)
{
    uint8_t func_info[7];
    
    memset(func_info, 0, sizeof(func_info));
    
    abApi_Write[0] = 0x10;
    siSendData(abApi_Write, 1);
    siWaitForCTS();
    siReadResp(func_info, 7);
    siDelayUs(1);
    
    si4463_debug("si446x_Get_Func_Info:");      // FF  06  00  02  CA  90  01  
    for(uint8_t i = 0; i < 7; i++)
    {
        si4463_debug("%02x  ", func_info[i]);
    }
    si4463_debug("\n");
    
    if((func_info[5] != 0x90) && (func_info[6] != 0x01))
    {
        return 0xFF;
    }
    return 0;    
}

仿真结果:
在这里插入图片描述
00> si446x_Get_Part_Info:FF 22 44 63 00 86 00 00 06
00> si446x_Get_Part_Info:FF 06 00 02 CA 90 01

参考链接

在网上搜到了一篇文章:Silicon Labs无线收发芯片Si4463如何区分芯片版本号?,文中可以看到:

如果Si4463芯片丝印第一行字符为“44631B”,则芯片为B1版本;如果Si4463芯片丝印第一行字符为“44632A”,则芯片为C2版本;
通过CHIPREV或ROMID来判断Si4463芯片的版本号,如果读到的CHIPREV为0x11,或者ROMID为0x03,则Si4463芯片为B1版本;如果读到的CHIPREV为0x22,或者ROMID为0x06,则Si4463芯片为C2版本;

si446x_Get_Part_Info:FF 22 44 63 00 86 00 00 06 中第二个字节0x22,最后一个字节0x06,可以得到我用的是C2版本。
区分版本就是通过第三、四字节的PART + 最后一个字节的ROMID,表格说明如下:
在这里插入图片描述

三、始终无法接收

接收不稳定

【经验】仅需3步,轻松实现Si446x无线收发器的变长包收发
一个作为网关,轮询两个节点。节点1发送6个0x11,节点2发送62个0x22。从网关的log可以看到,节点1超出部分乱码
在这里插入图片描述
可以把不足62字节补填为0,

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:50:48  更:2022-10-17 12:51:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:19:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码