打印
[活动专区]

【AutoChips 7801x MCU评测报告】+24C02

[复制链接]
542|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天测试了一下AT24C02.
代码:
/*************<include>****************/
#include "i2c.h"
#include "gpio.h"
#include "timer.h"

/*************<macro>******************/


/*************<enum>*******************/


/*************<union>******************/


/*************<struct>*****************/


/*************<variable>***************/


/*************<prototype>**************/


/**
* [url=home.php?mod=space&uid=555622]@prototype[/url] main(void)
*
* @param[in] void
* @return         void
*
* [url=home.php?mod=space&uid=247401]@brief[/url]           main entry.
*                         main函数.
*/
int main(void)
{
        InitDelay();
        InitDebug();
       
        LED_Init();
        KEY_Init();
        TIM_InitHw();
        I2C_InitHw();
       
        while(1)
        {
                KEY_ScanInput();
        }
}

/*************<end>********************/
void KEY_ScanInput(void)
{
        if (g_scanKeyTime >= SCAN_KEY_INTVL)
        {
                g_scanKeyTime = 0;
               
                /*上次**KEY6状态为释放且当前KEY6按下,进行二次确认并重新**KEY6状态.*/
                if ((g_getKey6Sts == KEY_RELEASE) && (GET_KEY6_STS() == KEY_PRESS))
                {
                        mdelay(10);
                        if (GET_KEY6_STS() == KEY_PRESS)
                        {
                                g_getKey6Sts = KEY_PRESS;
                                /*写入数据.*/
                                I2C_WrDataToAT24C();
                        }
                }
                /*上次**KEY6为按下且当前KEY6释放,更新**KEY6状态,以保证每次按键动作有效性.*/
                else if ((g_getKey6Sts == KEY_PRESS) && (GET_KEY6_STS() == KEY_RELEASE))
                {
                        g_getKey6Sts = KEY_RELEASE;
                }
               
                /*上次**KEY7状态为释放且当前KEY7按下,进行二次确认并重新**KEY7状态.*/
                if ((g_getKey7Sts == KEY_RELEASE) && (GET_KEY7_STS() == KEY_PRESS))
                {
                        mdelay(10);
                        if (GET_KEY7_STS() == KEY_PRESS)
                        {
                                g_getKey7Sts = KEY_PRESS;
                                /*读取数据.*/
                                I2C_RdDataFromAT24C();
                        }
                }
                /*上次**KEY7为按下且当前KEY7释放,更新**KEY7状态,以保证每次按键动作有效性.*/
                else if ((g_getKey7Sts == KEY_PRESS) && (GET_KEY7_STS() == KEY_RELEASE))
                {
                        g_getKey7Sts = KEY_RELEASE;
                }
        }
}
/**
* @prototype I2C_WrDataToAT24C(void)
*
* @param[in] void
* @return         void
*
* @brief           写数据到EEPROM.
*/
void I2C_WrDataToAT24C(void)
{
        g_wrAT24CDataBuf[0] = 0x00;//写入地址
        for (uint8_t ii = 0; ii < 8; ii++)
        {
                g_wrAT24CDataBuf[ii + 1] = ii;
                printf("%d ", g_wrAT24CDataBuf[ii + 1]);
        }printf("\r\n");
        I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 9, ENABLE);
}

/**
* @prototype I2C_RdDataFromAT24C(void)
*
* @param[in] void
* @return         void
*
* @brief           从EEPROM读取数据.
*/
void I2C_RdDataFromAT24C(void)
{
        g_wrAT24CDataBuf[0] = 0x00;//读取地址
        I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 1, DISABLE);
        I2C_MasterBurstRead (I2C0, AT24C02_DEV_ADDR, g_rdAT24CDataBuf, 8);
        for (uint8_t ii = 0; ii < 8; ii++)
        {
                printf("%d ", g_rdAT24CDataBuf[ii]);
        }printf("\r\n");
}

效果图:

使用特权

评论回复

相关帖子

沙发
yljon| | 2020-6-8 15:35 | 只看该作者
佩服楼主有这么多时间可以玩这些板子

使用特权

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

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

19

粉丝