-
Notifications
You must be signed in to change notification settings - Fork 72
Open
Description
`/* 设置写使能所存器*/
void SetWriteEnableLatchForFM25xxx(FM25ObjectType *fram)
{
uint8_t opCode = FM25_WREN;
fram->ChipSelect(FM25CS_Enable);
fram->Write(&opCode, 1);
fram->ChipSelect(FM25CS_Disable);/*此处应该是DISABLE,好几处这里都需要修改 */
ReadStatusForFM25xxx(fram);
}
/向FM25xxx写入数据/
void WriteBytesToFM25xxx(FM25ObjectType *fram, uint32_t regAddress, uint8_t *wData, uint16_t wSize)
{
uint8_t data[128];
uint8_t temp;
uint16_t index = 0;
data[index++] = FM25_WRITE;
if (fram->memAddLength == FM258BitMemAdd)
{
data[index++] = (uint8_t)regAddress;
if ((fram->mode == FM25L04B) || (fram->mode == FM25040B))
{
temp = (uint8_t)(regAddress >> 8);
data[0] |= ((temp & 0x01) << 3);
}
}
else if (fram->memAddLength == FM2516BitMemAdd)
{
data[index++] = (uint8_t)(regAddress >> 8);
data[index++] = (uint8_t)regAddress;
}
else
{
data[index++] = (uint8_t)(regAddress >> 16);
data[index++] = (uint8_t)(regAddress >> 8);
data[index++] = (uint8_t)regAddress;
}
for (int i = 0; i < wSize; i++)
{
data[index++] = wData[i];
}
if (((fram->status) & 0x0C) != 0x00)
{
WriteStatusForFM25xx(fram, fram->status & (~FM25_BPALL)); /* 这里应该是去掉写保护,原始代码没有去掉*/
}
if (((fram->status) & 0x02) != 0x02)
{
SetWriteEnableLatchForFM25xxx(fram);/*去掉写保护后应该再写使能,才能正常写入数据*/
}
fram->ChipSelect(FM25CS_Enable);
fram->Write(data, index);
fram->ChipSelect(FM25CS_Disable);
WriteStatusForFM25xx(fram, fram->status | FM25_BPALL);
}`
查看注释部分
Metadata
Metadata
Assignees
Labels
No labels