E2E™ 设计支持
E2E™ 设计支持
  • 用户
  • 站点
  • 搜索
  • 用户
  • E2E™ 中文设计支持 >
  • 论坛
    • 放大器
    • API 解答
    • 音频
    • 时钟和计时
    • 数据转换器
    • DLP® 产品
    • 接口
    • 隔离
    • 逻辑
    • 微控制器
    • 电机驱动器
    • 处理器
    • 电源管理
    • 射频与微波
    • 传感器
    • 站点支持
    • 开关与多路复用器
    • 工具
    • 无线连接
    • 参考译文
    • 存档组
    • 存档论坛
  • 技术文章
    • 模拟
    • 汽车
    • DLP® 技术
    • 嵌入式处理
    • 工业
    • 电源管理
  • TI 培训
  • 快速入门
  • English
  • 更多
  • 取消
其他微控制器

其他微控制器

其他微控制器论坛

  • 论坛
  • 提及
  • 子组
  • 标记
  • 更多
  • Cancel
  • 提出相关问题
    什么是相关问题?
    相关问题是指与本问题有关联性的问题,”相关问题“ 被创建后,会自动链接到当前的原始问题。
  • 提出新问题
  • 提出新问题
  • Cancel
  • 状态
  • 已锁定 已锁定
  • 回复 5 回复
  • 订户 15 订户
  • 视图 4680 视图
  • 用户 0 会员在此处
选项
  • 标记
  • 更多
  • 取消
选项
  • 共享
  • 更多
  • 取消
相关

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1294 EEProm读写问题

Michael Chen41
Michael Chen41
Prodigy 101 points


各位大侠:

        我在调试TM4C1294的Eeprom读写问题,一直都没有调通,哪位高手指点一下!

        时钟配置:

        

g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
                                                                          SYSCTL_OSC_MAIN |
                                                                          SYSCTL_USE_PLL |
                                                                          SYSCTL_CFG_VCO_480), 120000000);

        代码如下:        

        SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0);
        EEPROMInit();
        e2prodata.E2romFlg = 0x0555;
        EEPROMProgram((uint32_t*)(e2prodata.E2romFlg), EEPROM_BASE_ADDRESS, 4);
        e2prodata.E2romFlg = 0;
        EEPROMRead((uint32_t*)(e2prodata.E2romFlg) ,EEPROM_BASE_ADDRESS, 4);
        if(e2prodata.E2romFlg == 0x0555)
        {
               UARTprintf("Eeprom Read and write succeed.\n");
        }
       else if(e2prodata.E2romFlg == 0)
       {
               UARTprintf("Eeprom Read and write failed.\n");
       }

       感谢了!

8 年多前
  • 取消
  • xyz549040622
    0 xyz549040622 8 年多前
    Guru 65885 points
    #include <stdint.h>
    #include <stdbool.h>
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "inc/hw_gpio.h"
    #include "inc/hw_ints.h"
    #include "driverlib/gpio.h"
    #include "driverlib/pin_map.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/eeprom.h"
    #include "utils/uartstdio.h"
     
     
    #define E2PROM_TEST_ADRES 0x0000 
     
    struct E2PROM
    {
        uint8_t value1;
        uint8_t value2;
        uint16_t value3;
        uint8_t value4[12];
    }; 
     
     
     
    struct E2PROM e2prom_write_value = {5,7,9826, "Hello World"}; /* Write struct */
    struct E2PROM e2prom_read_value =  {0,0,0,""}; /* Read struct */
     
     
    int main(void) 
    {
        uint32_t e2size,e2block;
     
        SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ); // islemcimizi 80 Mhz'e ayarlıyoruz.
     
        /* UART SETTINGS */
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
        GPIOPinConfigure(GPIO_PA0_U0RX);
        GPIOPinConfigure(GPIO_PA1_U0TX);
        GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
        UARTStdioConfig(GPIO_PORTA_BASE,115200,SysCtlClockGet());
        /*******************************/
     
        /* EEPROM SETTINGS */
        SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0); // EEPROM activate
        EEPROMInit(); // EEPROM start
        /*******************************/
     
        UARTprintf("EEPROM Test Program ,, Teknikyazi.com\r\n");
     
     
        e2size = EEPROMSizeGet(); // Get EEPROM Size 
        UARTprintf("EEPROM Size %d bytes\n", e2size);
     
        e2block = EEPROMBlockCountGet(); // Get EEPROM Block Count
        UARTprintf("EEPROM Blok Count: %d\n", e2block);
     
        UARTprintf("Write Try > Address %u: Struct : {%u,%u,%u,%s}\n", E2PROM_TEST_ADRES, e2prom_write_value.value1, e2prom_write_value.value2, e2prom_write_value.value3, e2prom_write_value.value4);
        EEPROMProgram((uint32_t *)&e2prom_write_value, E2PROM_TEST_ADRES, sizeof(e2prom_write_value)); //Write struct to EEPROM start from 0x0000
     
        EEPROMRead((uint32_t *)&e2prom_read_value, E2PROM_TEST_ADRES, sizeof(e2prom_read_value)); //Read from struct at EEPROM start from 0x0000
        UARTprintf("Read Try > Address %u: Struct : {%u,%u,%u,%s}\n", E2PROM_TEST_ADRES, e2prom_read_value.value1, e2prom_read_value.value2, e2prom_read_value.value3, e2prom_read_value.value4);
     
    while(1)
     {
     }
     
    }

    找到一个例程,你可以参考看看。你是卡在哪一步了呢?你eeprom的地址是否正确。

    • 取消
    • 向上 0 True 向下
    • 取消
  • Michael Chen41
    0 Michael Chen41 8 年多前 回复 xyz549040622
    Prodigy 101 points

    好的,谢谢了!

    • 取消
    • 向上 0 True 向下
    • 取消
  • Michael Chen41
    0 Michael Chen41 8 年多前 回复 xyz549040622
    Prodigy 101 points
     xyz549040622 :
         您好!如果我要改成120MHz是在这里改吗?
    SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ); // islemcimizi 80 Mhz'e ayarlıyoruz.
    
    
    Thanks and Best regards
    Michael

    • 取消
    • 向上 0 True 向下
    • 取消
  • Michael Chen41
    0 Michael Chen41 8 年多前 回复 xyz549040622
    Prodigy 101 points

    测试OK的,谢谢了!

    • 取消
    • 向上 0 True 向下
    • 取消
  • user6005323
    0 user6005323 5 年多前 回复 xyz549040622
    Prodigy 20 points

    为什么初始化后不执行写入eeprom会卡死在启动文件里呀

    • 取消
    • 向上 0 True 向下
    • 取消