PSoC 4100S GPIO驱动速度

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Simon_Chen
Level 3
Level 3
Distributor - Weikeng(GC)
10 replies posted 10 questions asked 10 sign-ins

Dear,

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

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

     谢谢。

Best Regards

Simon

0 点赞
1 解答
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

Simon,

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

在原帖中查看解决方案

0 点赞
3 回复数
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

直接写寄存器

  for(;;)

    {

  

        Pin_1_DR = 0xff;

        Pin_1_DR =0x00;

    }

这样得出的截图如下:

pastedImage_3.png

上升沿截图:

pastedImage_5.png

下降沿截图:

pastedImage_8.png

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

0 点赞
Simon_Chen
Level 3
Level 3
Distributor - Weikeng(GC)
10 replies posted 10 questions asked 10 sign-ins

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 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

Simon,

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

0 点赞