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.

关于C2000从I2C进行Bootload.......

Guru 17055 points

C2000芯片有很多种bootload模式,SCI和I2C都比较常用,所以做一个从I2C进行bootload的实验,作为扫盲贴。

关于个芯片的bootload的资料可以参考该芯片的Boot ROM Reference Guide ,里面也会有对应的BOOTROM源代码。

这里实验用的是28335芯片,I2C的EEPROM用的是24WC256。

  • 第一步连接28335与EEPROM.EEPROM的slave address必须是0x50,连接EEPROM的I2C总线必须是GPIO33和GPIO32。

    下面是电路图:

     

    slave address 有外部的EEPROM芯片进行设定。以24WC256为例,由A0,A1引脚设定:

  • 第二步,设定芯片为I2C的bootmode,以28335为例:

     

    I2C的bootload 顺序如下,程序中会自动设置相关的引脚为I2C功能,不需要另行设定:

     

    相关的寄存器bootrom中的自带程序都会进行初始化:

  • 第三步,向I2C芯片写入数据。

    例如写入:

                              0xAA,                   // Msg Byte 1   08AA
                              0x08,                   // Msg Byte 2   I2CPSC
                              0x01,                   // Msg Byte 3
                              0x00,                   // Msg Byte 4   I2CCLKH
                              0x36,                   // Msg Byte 5
                              0x00,                   // Msg Byte 6   I2CCLKL
                              0x36,                   // Msg Byte 7
                              0x00,                   // Msg Byte 8
                              0x09,                   // Msg Byte 9   保留
                              0x10,                   // Msg Byte 10
                              0x11,                   // Msg Byte 11
                              0x12,                   // Msg Byte 12
                              0x13,                   // Msg Byte 13
                              0x14,                   // Msg Byte 14

                              0x15,                   // Msg Byte 15
                              0x16,                   // Msg Byte 16
                              0x17,                   // Msg Byte 17
                              0x18,                   // Msg Byte 18
                              0x00,                   // Msg Byte 19 entrypoint=0X0000C000
                              0x00,                   // Msg Byte 20
                              0x00,                   // Msg Byte 21
                              0xC0,                   // Msg Byte 22
                              0x06,                   // Msg Byte 23 数据长度   0x0006个字
                              0x00,                   // Msg Byte 24
                              0x00,                   // Msg Byte 25 要写入的地址=0X0000C000
                              0x00,                   // Msg Byte 26
                              0x00,                   // Msg Byte 27
                              0xC0                   // Msg Byte 28

                              0x22,                   // Msg Byte 29 要写入的数据
                              0x11,                   // Msg Byte 30
                              0x44,                   // Msg Byte 31
                              0x33,                   // Msg Byte 32
                              0x66,                   // Msg Byte 33
                              0x55,                   // Msg Byte 34
                              0x88,                   // Msg Byte 35
                              0x77,                   // Msg Byte 36
                              0xAA,                   // Msg Byte 37
                              0x99,                   // Msg Byte 38
                              0xCC,                   // Msg Byte 39
                              0xBB,                   // Msg Byte 40
                              0x00,                   //结束
                              0x00,

     

     

  • 第四步,复位28335芯片,让芯片运行。上面的数据意思是向0XC000写入6个字。

    可以监视,如下几处:

     

  • 朋友,您好!

    最近我在进行C28346的开发,由于该款芯片只能使用外部空间存储程序。我使用I2C装载eeprom模式自举,但是我对这操作过程毫无经验,看了您的帖子,我想请教一个问题:程序如何烧写入eeprom中?CCS生成的.out文件如何处理呢?谢谢!