闻方 2022-04-21 09:30 采纳率: 60%
浏览 32
已结题

EEPROM写入的时候 剩余页pageremainlen的大小是怎么算的 如果数据大于页的剩余地址 数据地址加pageremainlen是什么意思

U32 EED_Write(U16 address, U8* data_buf, U16 len)
{
U32 ret = EED_OK;
U16 PageRemainLen = 0;

if((address < EED_ADDRESS_SIZE) && (len != 0x00u) && (data_buf != NULL))
{
    if((DSPI_Get_State(DSPI_EEPROM) == DSPI_STATE_IDLE) && (EED_state == EED_IDLE)) 
    {
        data_addr   = address;
        data_ptr    = data_buf;
        data_length = len;          
        EED_state   = EED_WRITE;

        (void)DSPI_Send_Byte(DSPI_EEPROM,EED_INSTRUCTION_WREN,FALSE);
        (void)DSPI_Send_Byte(DSPI_EEPROM,EED_INSTRUCTION_WRITE,TRUE);
        (void)DSPI_Send_Byte(DSPI_EEPROM,(U8)((data_addr & 0xFF00u) >> 0x08u),TRUE);
        (void)DSPI_Send_Byte(DSPI_EEPROM,(U8)(data_addr & 0xFFu),TRUE);
        PageRemainLen = EED_PAGE_SIZE - (data_addr & (EED_PAGE_SIZE - 1));

        if(data_length > PageRemainLen)
        {
            (void)DSPI_Send_Data(DSPI_EEPROM, data_ptr, PageRemainLen);
            data_addr   += PageRemainLen;
            data_ptr    += PageRemainLen;
            data_length -= PageRemainLen;
        }                              
        else 
        {
            (void)DSPI_Send_Data(DSPI_EEPROM, data_ptr, data_length);
            data_length = 0;
        }
    } 
    else 
    {
        ret = EED_BUSY;
    }
}
else
{
    ret = EED_ERR;    
}

return(ret);

}

  • 写回答

2条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 4月29日
      • 已采纳回答 4月21日
      • 修改了问题 4月21日
      • 创建了问题 4月21日

      悬赏问题

      • ¥30 VB6.0操作 webview2内核的浏览器如何精确实现网页弹窗处置
      • ¥15 pr导出的视频打不开,提示“缺少编解码器”怎么解决
      • ¥15 html里js获取php参数值不成功,帮改代码
      • ¥20 如何控制ant design的InputNumber组件 最多输入5位小数
      • ¥15 c语言学生基本信息管理系统
      • ¥100 火车头采集器采集求解
      • ¥88 关于#运行时间 时间重叠 和非重叠#的问题,如何解决?
      • ¥15 C语言,密切接触者追踪
      • ¥20 关于计算机网络问题,请附带讲解
      • ¥30 自动识别图像目标并判断