element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum Crosstalk between raspberry Pi GPIO inputs
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 10 replies
  • Subscribers 665 subscribers
  • Views 3532 views
  • Users 0 members are here
  • rasberry_pi_3_b_plus
  • raspberry_pi
Related

Crosstalk between raspberry Pi GPIO inputs

colporteur
colporteur over 6 years ago

Are there any known issues of crosstalk between GPIO inputs?

 

I am using Python module RPi.GPIO to event detect on GPIO pins. One program monitors GPIO 2 pin 3 and the second program monitors GPIO 3 pin 5. I am using GPIO.event_detected to detect events within the programs. In the GPIO 2 monitor program, when  GPIO 2 is pulled low, I get a trigger event for GPIO 2 and GPIO 3. In the GPIO 3 monitor program, when  GPIO 3 is pulled low, I get a trigger event for GPIO 3 and GPIO 2.

 

I have seen this pattern of across three different Pi's. On two of Pi's the crosstalk is across GPIO 2, 3 & 4. After obtaining the same results across a Pi 2 & Pi 3, I opened a new Pi 3B+ never used and got similar results.

 

I am using the python script below substituting the pin 3 & pin 5.

 

# setup GPIO
GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)  # set option to reference physical pins
# Set GPIO function
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # set GPIO input
GPIO.add_event_detect(5, GPIO.BOTH)

try:

   while True:

   if GPIO.event_detected(5):

   print("5 Triggered")

 

except KeyboardInterrupt:  # if ctrl+c pressed exit cleanly
   GPIO.cleanup()

except:  # this catches ALL other exceptions including errors.
   GPIO.cleanup()

finally:  # cleanup GPIO on normal exit
   GPIO.cleanup()

 

My test cases target the suggestion, I have a bad Pi(s). I have extended this same test to three new Pi 3B+ just removed from the package and get the same results. All show crosstalk between GPIO 2,3  with some being GPIO 2, 3 & 4. This suggests I am at fault and not the Pi's.

 

Can anyone share their insight?

 

Sean

  • Sign in to reply
  • Cancel
Parents
  • Gough Lui
    Gough Lui over 6 years ago

    What is more important is what do you have connected on those pins?

     

    If the answer is "nothing", then that is expected behaviour. Generally speaking, input pins are "high impedance" and will basically react to environmental noise, mains hum, capacitive coupling between adjacent pins, static electricity (which can kill them) etc. When your GPIO pins are being driven by an input, they would have a lower impedance and be able to sink/source enough current to maintain the pin at the "intended" level. If this is not the case, then maybe your peripheral has insufficient drive strength and a buffer amplifier might be necessary.

     

    Perhaps you can try this experiment - connect a 33k resistor from the pin you're receiving crosstalk on to ground ... the crosstalk should disappear.

     

    - Gough

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Gough Lui
    Gough Lui over 6 years ago

    What is more important is what do you have connected on those pins?

     

    If the answer is "nothing", then that is expected behaviour. Generally speaking, input pins are "high impedance" and will basically react to environmental noise, mains hum, capacitive coupling between adjacent pins, static electricity (which can kill them) etc. When your GPIO pins are being driven by an input, they would have a lower impedance and be able to sink/source enough current to maintain the pin at the "intended" level. If this is not the case, then maybe your peripheral has insufficient drive strength and a buffer amplifier might be necessary.

     

    Perhaps you can try this experiment - connect a 33k resistor from the pin you're receiving crosstalk on to ground ... the crosstalk should disappear.

     

    - Gough

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
Children
  • colporteur
    colporteur over 6 years ago in reply to Gough Lui

    Thanks for the response. I discovered the issue with the Pi connected to a bi-direction login level converter module. https://cdn.sparkfun.com/datasheets/BreakoutBoards/Logic_Level_Bidirectional.pdf

     

    My initial reaction was I toasted some GPIO's. After isolating the Pi by removing the converter, I began to see the anomaly I described. Currently the inputs are floating, (i.e. nothing connected) but I will try your resister suggestion and report back.

     

    I assumed configuring the GPIO to use the pull-up would eliminate the floating input issue. Is this assumption incorrect?

     

    Sean

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Cancel
  • Gough Lui
    Gough Lui over 6 years ago in reply to colporteur

    I must have overlooked that - if you are running internal pull-up, then it may pay to look at the signals on the lines with an oscilloscope during one of these cross-talk events, as there could be a potential that those may be fried or leaky. ESD damage can occasionally cause funny things too, due to leaky ESD protection diodes. The current on each GPIO pin is very limited, so they can sometimes be inadvertently damaged.

     

    In the case using external resistors of some value helps eliminate it, it could be that the internal pull up/pull down isn't quite strong enough to overcome the stray coupled voltage. If you're using the GPIO, normally it will be attached to a circuit that drives it with a fairly low impedance, so it may not be a big issue in reality.

     

    Other times it might just be a sign you've got a lot of electrical noise around ... Cheap USB chargers sometimes can cause the touchscreens on phones to malfunction for similar reasons.

     

    - Gough

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube