3 Replies Latest reply on Sep 9, 2019 2:54 AM by LinglingG_46

    PSoC 4100S GPIO驱动速度

    SiCh_2873226

      Dear,

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

       

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

           谢谢。

       

      Best Regards

      Simon

        • 1. Re: PSoC 4100S GPIO驱动速度
          LinglingG_46

          直接写寄存器

            for(;;)

              {

            

                  Pin_1_DR = 0xff;

                  Pin_1_DR =0x00;

              }

          这样得出的截图如下:

          上升沿截图:

          下降沿截图:

           

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

          • 2. Re: PSoC 4100S GPIO驱动速度
            SiCh_2873226

            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左右,

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

             

            Best Regards

            Simon

            • 3. Re: PSoC 4100S GPIO驱动速度
              LinglingG_46

              Simon,

               

               

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