显示标签为“MCU”的博文。显示所有博文
显示标签为“MCU”的博文。显示所有博文

2025年5月10日星期六

nRFgo识别不出,但是mdk能识别出设备的解决方法

 遇到一个JLINKV9.2 固件提示最新版本,


mdk能正常发现和擦写设备,但是nRFgo却识别不出我的nrf52832


很奇怪,换一个jlinkv8 nrfgo识别出了,说明是这个jlink v9.2的问题,


后来网上找了旧版jlink固件,重刷jlink v9固件搞定,


貌似某宝的一批jlinkv9.2都有这个问题,记录一下吧

TJA1050只能RX不能TX



今天新换的TJA1050发现只能RX不能TX,芯片上面有个小圆点角标

换回旧的TJA1050没有角标的芯片,一切正常

所以推测市面上带角标的一批TJA1050是假货。

仅供大家参考

ROHM的EEPROM SPI读写编程



型号为 BR93L56-W SPI接口 4线连接,这里使用GPIO模拟SPI操作。

首先研究Timing















然后是代码:

void SPI_Init(void)
{
    SPI_SCK_0;
    SPI_CS_0;
    SPI_MOSI_0;
}

void EEPROM_SendADDR(uint8_t send_addr)
{
    uint8_t i;

    for(i = 0;i<8;i++)
    {
        if(send_addr & 0x80)
        {
               SPI_MOSI_1;
        }
    else
    {
            SPI_MOSI_0;
    }
    send_addr<<=1;
    delay_us(500);
    SPI_SCK_1;
    delay_us(500);
    SPI_SCK_0;
    }
}

uint16_t EEPROM_Receive(void)
{
    uint16_t receive_data = 0;
    uint8_t i;

    for(i=0;i<16;i++)
    {
        SPI_SCK_1;
        delay_us(500);
        receive_data<<=1;
        if(SPI_READ_MISO)
        {
            receive_data ++;
        }
        SPI_SCK_0;
        delay_us(500);

    }
    return receive_data;
}


uint16_t EEPROM_Read(uint8_t read_addr)
{
    uint16_t read_data;
    uint8_t i;
    uint8_t read_code = 0x06;
    SPI_MOSI_0;
    SPI_CS_1;
    for(i = 0;i<4;i++)
    {
        if(read_code & 0x08)
        {
            SPI_MOSI_1;
        }
        else
        {
            SPI_MOSI_0;
        }
    read_code<<=1;
    delay_us(500);
    SPI_SCK_1;
    delay_us(500);
    SPI_SCK_0;
    }

    EEPROM_SendADDR(read_addr);

    read_data = EEPROM_Receive();
    SPI_CS_0;
    return read_data;
}

void EEPROM_SendDATA(uint16_t send_data)
{
    int i;

    for(i = 0;i<16;i++)
    {
        if(send_data & 0x8000)
        {
            SPI_MOSI_1;
        }
        else
        {
            SPI_MOSI_0;
        }
        send_data<<=1;
        delay_us(500);
        SPI_SCK_1;
        delay_us(500);
        SPI_SCK_0;
    }
}


void EEPROM_WEN(void)
{
SPI_MOSI_0;
SPI_CS_1;
uint8_t i;
uint8_t wen_code = 0x13;
for(i = 0;i<6;i++)
{
if(wen_code & 0x20)
{
SPI_MOSI_1;
}
else
{
SPI_MOSI_0;
}
wen_code<<=1;
delay_us(500);
SPI_SCK_1;
delay_us(500);
SPI_SCK_0;
}
wen_code = 0x01;
for(i = 0;i<6;i++)
{
if(wen_code & 0x20)
{
SPI_MOSI_1;
}
else
{
SPI_MOSI_0;
}
wen_code<<=1;
delay_us(500);
SPI_SCK_1;
delay_us(500);
SPI_SCK_0;
}
SPI_CS_0;
}


void EEPROM_Write(uint8_t write_addr,uint16_t write_data)
{
uint8_t i;
uint8_t write_code = 0x05;
EEPROM_WEN();
SPI_MOSI_0;
SPI_CS_1;
for(i = 0;i<4;i++)
{
if(write_code & 0x8)
{
SPI_MOSI_1;
}
else
{
SPI_MOSI_0;
}
write_code<<=1;
delay_us(500);
SPI_SCK_1;
delay_us(500);
SPI_SCK_0;
}
EEPROM_SendADDR(write_addr);
EEPROM_SendDATA(write_data);
SPI_CS_0;
delay_ms(6);
}


最后读写测试OK


几个注意点,主要还是得仔细看手册。


1 此EEPROM CS高电平有效


2 此EEPROM 时钟频率最快支持 2MHz clock,所以SCK延迟不能太小,频率计算要在2MHZ以下


3 此EEPROM SPI发送和接收数据 一次16bit,地址是8bit


4 Write enable (WEN)时,第6个SCK后的时钟也必须输入,也就是10011后的6-11个SCK不能忽略,数据可以任意


TL-XDR5480 WPA2/WPA3混合模式存在WPA3 SAE认证异常

平时经常遇到手机一开始连接正常,但是用了一段时间,比如用了2天,iphone会提示无法加入网络。 重启iPhone无法恢复 修改iPhone私有Wi-Fi地址(更换一个MAC地址)后立即恢复 终端 iphone8 iphone15pro ipad9代都遇到过。 无线...