TI中文支持网
TI专业的中文技术问题搜集分享网站

28335IOData寄存器连续操作bit位会导致前一个操作失效

Other Parts Discussed in Thread:C2000WARE

GpioDataRegs.GPADAT.bit.GPIO0 = 0;
GpioDataRegs.GPADAT.bit.GPIO1 = 0;
这样连续操作导致IO0写入失败,中间加Nop空指令就可以,请问这是什么原理,谢谢!
Green Deng:

你好,使用GPxDAT寄存器操作GPIO口的话需要添加一个延时(或者你操作的空指令),具体原理不知。使用其他寄存器(如set,clear,toggle)的话不需要详细你可以参考例程:C:\ti\c2000\C2000Ware_3_03_00_00\device_support\f2833x\examples\gpio_toggle

,

William chen:

谢谢,解决方法我知道,就是想知道原理,是不是335是多级流水线,指令会并行导致的?335是几级流水线这个我好像也没找到资料。

,

Green Deng:

F28335是8级流水线
GPADAT寄存器比较特殊,它反映I/O的状态,使用位操作指令时会有注意,因为位操作指令实际上是分三步完成的:读-改-写。如果坚持一定要用GPADAT来对输出口操作,则必须是对整个字进行操作,这样就不会有这个问题了。具体原因可以查看下面的应用说明文档(在 6.1.2 GPxDAT Registers)
www.ti.com.cn/…/spraa85e.pdf

,

William chen:

谢谢,辛苦了!

,

Green Deng:

客气了

赞(0)
未经允许不得转载:TI中文支持网 » 28335IOData寄存器连续操作bit位会导致前一个操作失效
分享到: 更多 (0)