TMS320F28379D: GPIO159电平翻转出现非人为的延迟问题

Part Number: TMS320F28379D
Other Parts Discussed in Thread: C2000WARE

如题,电路设计中将GPIO159设置外部SPI接口的EEPROM器件的片选端,由软件手动控制该IO口,读写存储器期间,发现片选端已事先手动拉低到低电平,但逻辑分析仪扫描SPI接口所有信号,发现时间上是先出现的SPI的时钟和数据信号,片选信号居然延迟了一段时间才被实际拉低;不仅如此,在SPI接口数据发送完毕后,代码上是立刻将片选信号再次拉高,结果发现GPIO159在延迟了很长时间后才真正置为了高电平,代码和逻辑分析仪截图如下:

 

 

e046fbff-b3d5-42ca-86fd-2a5a56e41a51.png

image.png

 

 

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 您好,

          您这个SPI发送程序是嵌入在串口接收程序中?猜测您这个问题和芯片及驱动无关,建议您检查一下代码执行逻辑。

          c2000ware中提供了SPI示例代码,您可以直接测试一下SPI的功能 spi 。      

  • 是否是SPI驱动引起的问题,我这个验证过,第一个截图里面,我将第一个条件编译关闭,使能第二个条件编译,让GPIO0和GPIO159做电平翻转,类似LED灯闪烁的动作,GPIO159出现一样的情况,GPIO159比GPIO0要延迟几个微秒才变成低电平,然后GPIO0都早已拉到高电平了,GPIO159要过很长时间才是高电平

  • 作为对比,在SPI发送数据时,把GPIO0和GPIO159做同样的电平变化,相关代码截图如下:

    逻辑分析仪对GPIO0和GPIO159进行扫描,同时扫SPI的时钟信号,截图如下:

    如果是SPI或者串口相关代码或者配置有影响,那应该GPIO0的电平翻转时序也要受影响才对呀,况且相关SPI接口的驱动代码,我在别的工程里一直在使用的,没有遇到过此类问题

  • 再进一步测试,关闭串口功能,关闭SPI功能,代码上完全单纯的只让GPIO0和GPIO159两个IO口做电平翻转测试,代码截图如下:

     串口和SPI的初始化都关闭了

     while循环里面只做两个IO口的电平翻转

    逻辑分析仪扫描结果的截图如下:

    放大后的细节:

     电平由高到低期间,GPIO159比GPIO0延迟大约26us

     电平由低到高期间,GPIO159比GPIO0延迟大约130us

  • 您好,

          我不确认为何会出现此问题,GPIO的PORTA 和PORTE没什么区别,GPIO159外围电路有什么特殊吗。

         您测试过单独GPIO的例程码?比如 gpio_toggle