cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC™ 4

Simon_Chen
New Contributor II

Dear,

     在使用CY8C4126AZI-S433的时候,需要通过一个GPIO实现一个私有的单线通信协议,协议大体如图通信.png

     在实现是发现通过Pin_write(1);CydelayCycle(4);Pin_write(0);的方式驱动GPIO实际速度无法符合通信协议要求,所以想了解一下有没有直接写GPIO output data register的方法,能不能满足这个协议的要求。具体这个通信协议请查阅附件文档。

     谢谢。

Best Regards

Simon

0 Likes
1 Solution
LinglingG_46
Moderator
Moderator

Simon,

按照我的理解,不改变这个port其他IO的值的时候,CY8C4126AZI-S433,380ns已经是最快的时间了,没有方式可以缩小了。

View solution in original post

0 Likes
3 Replies
LinglingG_46
Moderator
Moderator

直接写寄存器

  for(;;)

    {

  

        Pin_1_DR = 0xff;

        Pin_1_DR =0x00;

    }

这样得出的截图如下:

pastedImage_3.png

上升沿截图:

pastedImage_5.png

下降沿截图:

pastedImage_8.png

根据上面的图分析从硬件上面是可以做到你给出的时序图的,不过具体的问题还是要具体分析。

0 Likes
Simon_Chen
New Contributor II

Hi Lingling,

   我测试了一下,直接赋值Pin_DR在速度上是够快的,时间小于300ns,但是当我尝试不改变这个port其他IO的值的时候,发现时间就会非常紧张,测试code如下:

for(;;)

{

        Pin_1_DR = Pin_1_DR|0x00000001;

        Pin_1_DR = Pin_1_DR&0xfffffff0;

        CY_NOP;

        CY_NOP;

        CY_NOP;

        CY_NOP;

        CY_NOP;

        CY_NOP;

        CY_NOP;

        CY_NOP;

        CY_NOP;

        CY_NOP;

}

先至高,然后置低的时间我通过逻辑分析仪测试在380ns左右,pastedImage_5.png

这个时间能否进一步缩短呢?

Best Regards

Simon

0 Likes
LinglingG_46
Moderator
Moderator

Simon,

按照我的理解,不改变这个port其他IO的值的时候,CY8C4126AZI-S433,380ns已经是最快的时间了,没有方式可以缩小了。

View solution in original post

0 Likes