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.

C28346的I2C引导



在将GPIO87-84配置为I2C引导方式后,将芯片上电发现程序有时不能引导成功。

用示波器观察SDA和SCL管脚发现,当引导不成功时,SDA管脚出现一个下降沿而后马上变为高电平,而SCL管脚则一直为高电平。这可以判断为I2C根本没有启动,而在关于BOOT的文档中说是要先判断受到的是否为0x08AA,才会有后续操作。

请问,对于出现这样的问题,应该如何操作,才能是程序正确从I2C导入?

  • 需要确定GPIO84~87的电平是没有问题的,然后请参考BOOT ROM手册的2.20 I2C Boot Function章节检查引脚,时钟等配置是否正确。

  • 确定GPIO87-84脚电平没有问题,而且引导也不是必定不能成功,当reset次数多了之后,还是能成功的。此外,去除SDA和SCL管脚的上拉电阻也会影响引导的成功几率。

    而且,仿真运行TI提供的TMS320x2834x_boot_rom_Gold_v1b.out后发现,虽然BootMode判断到为C即应该进入到I2C_TIMING1_BOOT段程序,但是停下仿真器后却发现程序运行到了XINTF_Parallel_Boot中。不知道是什么原因导致的。

  • 那你可以从“BootMode判断到为C”开始单步运行看看程序是如何运行的吗?

    我怀疑还是时间或电平的问题导致boot异常,比如,虽然应该进入C,但由于没有数据,boot在持续检查和判断电平然后发现转到外部总线了。

  • 首先,当运行2834x_boot_rom.out时,如果不reset芯片,则程序会运行至ITRAPIsr.asm中,并且不能跑出来;如果reset芯片,则程序不会在断点处停下来,因此从BootMode判断到C开始单步运行的操作好像实现不了。

    其次,C28346的引导是会循环判断的,即如果我判断到是I2C引导,但是没有收到数据,则会自动reset芯片,重新判断引导方式,对吗?之前说我的引导是有时候成功,有时候不成功,当我引导不成功的时候,我reset芯片也不能使程序再次引导成功了,但是当我执行下面的操作之后,程序又能引导成功了:将引导方式改为"Jump to SARAM”reset芯片,再将引导方式改回I2Cboot。

    当引导不成功的时候,管脚电压为3.333V,3.333V,0V,0V。是否符合I2C引导的管脚电压?

    对于您说的时间问题,我不是很理解,引导方式是固化程序,不是我能修改的,即便我想修改I2C的设置,也要等芯片先读到0x08AA才可以啊。