打印

PIC47Q10读写EEPROM,我是用的MCC生成的代码,会有错误吗?

[复制链接]
3356|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
橘子阿小|  楼主 | 2021-8-5 16:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCC生成的代码如下:void WR_EEPROM(uint16_t bAdd, uint8_t bData)
{
   uint8_t GIEBitValue = INTCONbits.GIE;
    NVMADRU = 0x31;
    NVMADRH = (uint8_t)((bAdd & 0xFF00) >> 8);
    NVMADRL = (uint8_t)(bAdd & 0x00FF);
    NVMDATL = (uint8_t)(bData & 0xFF);
    NVMCON0bits.NVMEN = 1;
    INTCONbits.GIE = 0;
    NVMCON2 = 0x55;
    NVMCON2 = 0xAA;
    NVMCON1bits.WR = 1;
    while (NVMCON1bits.WR)
    {
    }
    NVMCON0bits.NVMEN = 0;
    INTCONbits.GIE =GIEBitValue;

}

uint8_t RD_EEPROM(uint16_t bAdd)
{
    NVMADRU = 0x31;
    NVMADRH = (uint8_t)((bAdd & 0xFF00) >> 8);
    NVMADRL = (uint8_t)(bAdd & 0x00FF);
    NVMCON1bits.RD = 1;
    NOP();  
    NOP();
    return (NVMDATL);
}

使用特权

评论回复

相关帖子

沙发
橘子阿小|  楼主 | 2021-8-5 17:00 | 只看该作者

PIC47Q10读写EEPROM,我是用的MCC生成的代码,会有错误吗?

有的参数修改数据就保存不了,这是什么问题呢?

使用特权

评论回复
板凳
panxiaoyi| | 2021-8-5 21:15 | 只看该作者
我这里有一份自己写的PIC18F27Q10的EEPROM读写驱动,不知道是否合你意,PIC18F27Q10和PIC18F47Q10只是封装不同而已

#include "EEPROM.h"

unsigned char EEPROM_Read(unsigned short addr)
{
    unsigned char eep_data;

    NVMADRL=addr;                                                               //加载地址低位
    NVMADRH=(addr>>8);                                                          //加载地址高位
    NVMADRU=0x31;                                                               //加载地址最高位
   
    NVMCON0=0x80;                                                               //NVM使能
    NVMCON1 |=1;                                                                //读使能
    while(NVMCON1&1);                                                           //等待读结束
    eep_data=NVMDATL;                                                           //读取数据
    NVMCON0=0;                                                                  //NVM关闭
   
    return eep_data;
}

void EEPROM_Write(unsigned short addr , unsigned char dat)
{
    unsigned char eep_data;

    NVMADRL=addr;                                                               //加载地址低位
    NVMADRH=(addr>>8);                                                          //加载地址高位
    NVMADRU=0x31;                                                               //加载地址最高位
    NVMDATL=dat;                                                                //加载数据
   
    NVMCON0=0x80;                                                               //NVM使能
    NVMCON2=0x55;                                                               //解锁步骤1
    NVMCON2=0xAA;                                                               //解锁步骤2
    NVMCON1|=(1<<4);                                                            //写使能
    while(NVMCON1&(1<<4));                                                      //等待写结束
    while(!(PIR7&(1<<5)));                                                      //等待写结束中断标记置位
    PIR7&=(~(1<<5));                                                            //清除标记位
    NVMCON0=0;                                                                  //NVM关闭
}


【模板】PIC18F27Q10_UART_EEPROM.rar

199.06 KB

使用特权

评论回复
地板
橘子阿小|  楼主 | 2021-8-6 08:20 | 只看该作者
panxiaoyi 发表于 2021-8-5 21:15
我这里有一份自己写的PIC18F27Q10的EEPROM读写驱动,不知道是否合你意,PIC18F27Q10和PIC18F47Q10只是封装 ...

谢谢,我试一下

使用特权

评论回复
5
橘子阿小|  楼主 | 2021-8-6 08:46 | 只看该作者
panxiaoyi 发表于 2021-8-5 21:15
我这里有一份自己写的PIC18F27Q10的EEPROM读写驱动,不知道是否合你意,PIC18F27Q10和PIC18F47Q10只是封装 ...

我还是出现那个问题,请问您知道为什么我的时钟参数修改完,确保存不了吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

152

帖子

1

粉丝