Electronic Basics #36: SPI and how to use it

Поделиться
HTML-код
  • Опубликовано: 19 июн 2024
  • $2 for 10 PCBs (10cm*10cm): jlcpcb.com
    Previous video: • DIY Adjustable Constan...
    Electronic Basics #19: I2C and how to use it: • Electronic Basics #19:...
    Facebook: / greatscottlab
    Twitter: / greatscottlab
    Support me for more videos: www.patreon.com/GreatScott?ty=h
    Websites which were shown in the video:
    www.maximintegrated.com/en/pr...
    datasheets.maximintegrated.co...
    arduino.stackexchange.com/que...
    github.com/sparkfun/DeadOn_RT...
    learn.sparkfun.com/tutorials/...
    In this Electronic Basics episode I will present you the most important facts about the communication protocol SPI and how we can use it with an Arduino and an RTC IC.
    Thanks to JLCPCB for sponsoring this video
    Visit jlcpcb.com to get professional PCBs for low prices
    Music:
    2011 Lookalike by Bartlebeats
    Ecstatic Wave, Jens Kiilstofte
    machinimasound.com/music
  • НаукаНаука

Комментарии • 339

  • @northshorepx
    @northshorepx 5 лет назад +128

    Fantastic. It was very good to see just enough detail so that it wasn't overloading my brain. The timing wave diagrams made everything so clear especially the modes. Thank you.

    • @rupantaradhikary1482
      @rupantaradhikary1482 5 лет назад +1

      I learned somthing new about spi

    • @masaratech
      @masaratech 5 лет назад

      @@parisgr i am thinking the same think wtf !!?

    • @northshorepx
      @northshorepx 5 лет назад

      You guys should support the channel - Patreon!

    • @masaratech
      @masaratech 5 лет назад

      @@parisgr how !?

  • @thomaslsr6847
    @thomaslsr6847 5 лет назад +13

    That's incredible, everytime I discover a new thing needed for my project, you got a video about the subject :)

  • @davewreski6900
    @davewreski6900 4 года назад +3

    You have made the things I did not understand much clearer and I now do understand more than I ever have before. You are GREAT ! Thank you so much. I am looking forward to seeing more of your hard work. Also, I will be ordering some PCB's from your link.

  • @digitART30
    @digitART30 5 лет назад +11

    Nicely done Scott, thank you again for your dedication and time spent to share your knowledges, best wishes from Spain 🇪🇸

  • @UpcycleElectronics
    @UpcycleElectronics 5 лет назад +39

    Nice Demo of the programming side.
    A few notes though:
    1.) The AVR hardware SPI "SS" pin is used to turn the AVR into a slave device on a bus. Use any other available I/O pin for Selecting peripheral hardware on the SPI bus.
    2.) While I haven't played with the DS3234, I have been goofing around with the DS3231 as I have found them for a good bit cheaper. These RTC's are the best because they are temperature compensated. IIRC There is a small heating element inside the IC that keeps the temperature a few degrees above ambient. The cool part about this is that there is a temperature sensor built into the chip. This temperature sensor reading is available too! There are several different libraries available on the Arduino IDE Lib-Manager that make the temp reading available. I forget which one I used to get the temperature reading working, and I'm not in my main comp ATM, but it does work using one of them.
    3.) Temperature compensation makes these RTC's much better than the cheaper DS1302 (which was only designed for charging NiCd batteries with a cheap timer), or the DS1307. These other chips are extremely common with Ardy1 tutorials, but they are really bad at keeping time long term.
    4.) Anyone found a better deal on DS3231's or similar than $0.90 each (AliEx) for breakout boards in single/low quantities? I'm more interested in the chip itself instead of BO's but ATM it's cheaper for me to use a BO.
    -Jake
    PS On the off chance that Jeremy actually reads this. If you recall from your English classes, "Read" is one of the unusual words in English. Read in the present tense is pronounced like reed, but in the past tense is pronounced "red." It really doesn't matter. I couldn't care less if you change, but if I were on the other side of this, I would want to know ;)

    • @KnightsWithoutATable
      @KnightsWithoutATable 5 лет назад +1

      Great info about the chip and thanks for sharing it.

    • @electron-1979
      @electron-1979 5 лет назад +1

      The 3231 has the calendar, alarm and square wave output, too.
      Commonly used on Raspberry Pis

    • @clonkex
      @clonkex 5 лет назад +1

      I was intending to let him know about the pronunciation of "read", glad I don't have to :)

    • @shinjithenegotiator2795
      @shinjithenegotiator2795 3 года назад

      thank you so much person

  • @nagarajnagu
    @nagarajnagu 5 лет назад +7

    Really you are doing very good job. You are inspiring many minds to be creative. As always stay creative. Thank you Scott

  • @rishabhlavhale3096
    @rishabhlavhale3096 5 лет назад +2

    Thanks GreatScott! This video helps me a lot to understand how spi works. As always your videos are awesome...

  • @jyotigvzsftiwari221
    @jyotigvzsftiwari221 5 лет назад +6

    scott loved your video.
    you made such a vast topic soo easy.

  • @terrymaker4781
    @terrymaker4781 5 лет назад

    Great. Description on SPI! I have a number of projects that need SPI but I have been putting off. With this amount of detail I can finally try my hand at this useful protocol. Thanks for another great video! I always look forward to your next. ☑️😋

  • @minotodorov4144
    @minotodorov4144 4 года назад

    Super high quality explanation. Clear and concise. I loved the way you presented.

  • @adrianrodrigoguitar9482
    @adrianrodrigoguitar9482 5 лет назад

    Excellent video. You just came right in time, as I started playing with SPI devices recently. Thanks to you, all is much clearer now :)

  • @tpendletonYT
    @tpendletonYT 5 лет назад +1

    Thank you for another great video. I learn something new every time I watch one of your videos.

  • @bobharrison9620
    @bobharrison9620 2 года назад

    And I don't know though Arduino was difficult already.
    I should have studied more in High school 45 years ago.
    You are scary smart. Thanks Bob

  • @lewisbarnard3606
    @lewisbarnard3606 5 лет назад

    Love the detail you when into!! More videos like this please!!! Love your videos !!

  • @Mat2095
    @Mat2095 5 лет назад

    "the datasheet spoiled the surprise"
    I just love your humor!

  • @theopbro8691
    @theopbro8691 5 лет назад +4

    I love these types of videos

  • @jpoppinmoneyunit7098
    @jpoppinmoneyunit7098 5 лет назад +1

    Gosh I love these videos but it's always the programming that holds me up. More videos on programming please!!

  • @teenflon
    @teenflon Год назад

    Please never stop making videos

  • @suriyasuri2018
    @suriyasuri2018 5 лет назад

    Awesome....!!! SPI register explanation super....looking forward to see many videos on basics....👍👍

  • @SARankdirectorMinecraft
    @SARankdirectorMinecraft 9 месяцев назад

    Wow, that was really comprehensive. I’ll definitely use this as a reference!

  • @henryswan1374
    @henryswan1374 5 лет назад

    scott, you're one of my heros, i learned so much from your videos.

  • @johnjoyce
    @johnjoyce 5 лет назад

    Thank you for this one!!
    I think you could do a whole series of I2C and SPI examples like a cookbook.

  • @ukesharyal
    @ukesharyal 5 лет назад

    Finally got it on sunday .
    Waited for your video every week .

  • @schweizzz
    @schweizzz 5 лет назад

    Thank you for the jlcpcb Site. This is just amazing

  • @cyberspider78910
    @cyberspider78910 2 года назад

    Basics !!! This is super hit. I am equipped with writing library for SPI devices...lol....

  • @adershralornekar6977
    @adershralornekar6977 5 лет назад

    Thank you so much. you have simplified the details so much :)

  • @nmxwll9433
    @nmxwll9433 5 лет назад +4

    0:25 dry skin, you should use moisturizing cream...
    Other than that, great video, as always !
    You can also use SPI communication with 8bits shift registers like the 74HC595, that way you can extend the number of output pins if necessary

  • @MaheshPawaskar
    @MaheshPawaskar 5 лет назад

    Nice and Informative session. Thanks

  • @gazvlogs7459
    @gazvlogs7459 5 лет назад +5

    You have such a great way of explaining things to sound so damn interesting. Some electronics channels on youtube with just background music and sped up video of someone building something obscure and kind of pointless is like a night and day difference when a GS video comes along! May I suggest you look into more RC stuff? Like SBUS/IBUS protocols and how those protocols manage to have such low latency but most importantly how they talk to the flight controller and maybe prototype some sort of simple 5 channel tx/rx with arduino! OR Maybe I'm just overzealous :D

  • @W1RMD
    @W1RMD Год назад

    Great video! Thank you for sharing!

  • @topten7064
    @topten7064 4 года назад +1

    You are really great, good voice and subject is clear

  • @CraftLP27
    @CraftLP27 5 лет назад

    I'm starting to think GreatScott! can read my mind. I was just searching how to use a SPI Display for my RaspberryPI and he does a video about it. Although he doesn't talk about a SPI Display it helped me to connect the Display anyway. Thank you!

  • @mftechtube77
    @mftechtube77 5 лет назад

    Great Scott,u r always great!!.What an explanation sirji!!🙇😇

  • @jeremyvi
    @jeremyvi 5 лет назад

    Quality contents, should be mandatory to view before any other video ;)

  • @StaticVapour590
    @StaticVapour590 5 лет назад

    Fantastic video

  • @AlbaxArcade
    @AlbaxArcade 5 лет назад

    Thank you for this video!

  • @tamarathompson9418
    @tamarathompson9418 5 лет назад

    Cheers great video I'm going back to watch i2c .

  • @eneyefamous278
    @eneyefamous278 5 лет назад

    Always with the best.

  • @larsfagerbakke2140
    @larsfagerbakke2140 5 лет назад

    Awesome video, thanks!

  • @Loundre3
    @Loundre3 5 лет назад

    Watching this makes me feel alot better knowing that people can learn more about serial protocols and have a easier time working with them (if the setup doesn't screw up, if working in ASM or C). Learnt myself a few new things, even if i used SPI before several times (never bothered looking up the concept of modes, since its faster for me to look up the datasheet and see the edge triggering and clock polarity setup of the ics). Keep en coming, GreatScott!
    Mind if you try handling RS-232 (basically UART with specific voltage levels acting as a COM port) and CAN bus (popular automobile bus system) basics in future videos?

  • @makerun6927
    @makerun6927 4 года назад

    good presentation

  • @joejohns3543
    @joejohns3543 5 лет назад

    Love your videos!
    Oh Also EasyEDA is totally awesome. I found it 6 months ago and love it. I switched from KiCad

  • @JohirulIslam-lm2vz
    @JohirulIslam-lm2vz 5 лет назад

    Well explained! Thanks!!

  • @TheMrfireandwater
    @TheMrfireandwater 5 лет назад

    Great great great explanations, thank you!

  • @karthikeyanjayagandhan7914
    @karthikeyanjayagandhan7914 5 лет назад +2

    Your videos are interesting

  • @Kostanj42
    @Kostanj42 5 лет назад

    Great video!

  • @FunScientifix
    @FunScientifix 5 лет назад

    Efforts in your videos are 10/10. Always worth the 7 day wait.
    Also a request. Can you do a DIY or BUY for a solar charge controller?

  • @alphajuice
    @alphajuice 5 лет назад

    Great led cube intro, make it bass boost

  • @mechanic3318
    @mechanic3318 5 лет назад +1

    I wait for your video.....every Sunday...

  • @osuradanthanarayana7085
    @osuradanthanarayana7085 5 лет назад

    this video is really helpful....

  • @innovation4u336
    @innovation4u336 5 лет назад

    Very nice video sir.

  • @KnightsWithoutATable
    @KnightsWithoutATable 5 лет назад

    Very well done on showing the way this com protocol works. I can see a uses for this for fine measurement reading or output logic then sent to an Arduino Nano or other small form factor Arduino that would use I2C to communicate with another Arduino platform.

  • @isbestlizard
    @isbestlizard 4 года назад

    it was an amazing video! thanks!

  • @rohandabir1588
    @rohandabir1588 5 лет назад +1

    Nice video

  • @kedarprabhudessai
    @kedarprabhudessai 5 лет назад

    One thing i have noticed is Great scott and Electronoobs uploads their videos one after the other on the same day

  • @TheSilvax
    @TheSilvax 4 года назад

    good job man!

  • @electronic7979
    @electronic7979 5 лет назад

    Useful video

  • @allesolution6409
    @allesolution6409 5 лет назад

    sir in India 5 th sem is celebrated as teachers day.
    so happy teachers day.
    as u become my greatest learning source .thanks

  • @EvilSandwich
    @EvilSandwich 2 года назад +3

    GreatScott: *"Of course, you cannot use it for as many slave devices as the I square C protocol due to the limited number of chip select lines"*
    Me with more 74138 decoder chips than any sane human should have and no regard for compact design: *"I have no such weakness!"*

  • @AtulSohan
    @AtulSohan 5 лет назад

    hey Greatest Scott! , yeah i dont know any other Scott so in my book u r the Greatest Scott .
    Iam having some trouble with my washing machine ;
    its a fully automatic (it was ) until the ECU on it got fried . so i put in an arduino to do the confusing and it worked like a charm , thanks to your videos and lot of others.....................
    BUT me being an unqualified engineer and all decided " Its Working perfectely which means it is too simple it need more things so that something or the other will go WRONG"
    i should have listened to AvE "Dont fix it if it aint Broke" , i didint . so here iam
    i upgraded from a 4 relay module to an 8 realy
    added 2 pumps to dispense the soap and the after wash .
    i thinkits the power supply that is causing the problem .: previously it would blackout the arduino whan the realy energizied , so i put in 1000uF 6.3V
    Cap in parallel to the relay module supply . seems to work ; but ima having trouble sometimes .
    so should i change the PS unit or stick in more caps ?
    or could it be seomthing else ?
    BTW how do i isolate the relay module powersupply ? is there something like a small module that can do that ? like an optocoupler that can transfer power ?
    a module that has all the isolation transformers and stuff built in ?

  • @Bianchi77
    @Bianchi77 2 года назад

    Nice info, thanks :)

  • @gursharanmarwaha3376
    @gursharanmarwaha3376 5 лет назад

    THANKS BRO JUST NEEDED THIS VIDEO!!!!! 👌👌👌👌👌👌👌

  • @avejst
    @avejst 5 лет назад

    Thanks for sharing😀👍

  • @mandajisaikumar6870
    @mandajisaikumar6870 5 лет назад

    I just loved this.
    Bro can you do a video on aurduino parallel communication

  • @MDFRESCUER
    @MDFRESCUER 5 лет назад

    Good video. 👏🙌👍👌

  • @ratchet1freak
    @ratchet1freak 5 лет назад

    You can get around the slave select limitation by using a decoder or a serial to parallel IC (coincidentally the serial to parallel can be communicated with using SPI).

  • @ranasaad7456
    @ranasaad7456 5 лет назад

    Love your tech tecniqe

  • @georgetroulis
    @georgetroulis 5 лет назад

    I love the way you explain things, I think it would be awesome if you made a video on CAN as well. I know Arduino does not support it but its another one of those things that seems quite widely used and mysteriously enough there is no good videos about it :/ Keep up the good work :)

  • @JohnJCouture
    @JohnJCouture 5 лет назад

    Thank you for great video. Would it be possible to create a "playlist" for your "Electronic Basics" videos?

  • @elchiqui10
    @elchiqui10 5 лет назад

    A decoder/demultiplexer may be used to easily handle 2^N devices with N pins. For example using 74HC4515 you may handle 16 spi devices with only 4 microcontroller pins.

  • @ezion67
    @ezion67 Год назад

    A decoder/demultiplexer can be used for CS or /CS duties and free up pins on the micro.

  • @dsy457
    @dsy457 Месяц назад

    Protip: You can use a small cheap microcontroller like an attiny85 as a gpio expander to set the cs line on multiple spi devices high or low. Then you can just use i2c to tell the attiny85 which device you want to address and you only need to use your spi pins that you were using anyway and 2 pins for i2c on your main microcontroller to address all your spi devices. It is a little bit slower than using the pins on your main boy for chip select, but if you don't mind a switching latency of about 30 microseconds, then it works awesome.

  •  5 лет назад

    Nice video. Any chance you could explain the 4 wire SPI used on TFT displays?

  • @sahinyalgun767
    @sahinyalgun767 5 лет назад

    hi from Turkey

  • @MichaelLauerDr
    @MichaelLauerDr 7 месяцев назад

    Great tutorial, very understandable. Which Oscilloscope are you using?

  • @westoncampbell9388
    @westoncampbell9388 5 лет назад

    You should try making a wind turbine btw love your videos

  • @electron-1979
    @electron-1979 5 лет назад

    Would have loved it if you showed the frame rate difference between the two interfaces on the same/similar display!

  • @nuggetmstr8960
    @nuggetmstr8960 Год назад

    Would love if u can add an example how to use it at the other microcontroller, like ESP32 (which I currently need), etc. Overall this video give me a new knowledge about SPI communication. Thankss!! 👍

  • @simplelyf4072
    @simplelyf4072 3 года назад

    Thank u Great Scott for another great instructional. Great idea to test the SPI module first by making it output a square wave. Thanks !!

  • @AJRobinson
    @AJRobinson 2 года назад +1

    OKAY fine Scott I give in! After years of seeing your videos everywhere I just have to know......please tell me which pens and highlighters you are using, they seem to work so well! :D. Thanks for the good videos man

  • @yashmewada6604
    @yashmewada6604 4 года назад

    Hello Sir, this video is great and so is that I2C communication! I was wondering if you could make a video on UDP communication which according to my research is one of the fastest wireless communication protocols. It would be very helpful.
    Thanks.

  • @ChrisMuncy
    @ChrisMuncy 5 лет назад

    Acott, thanks for another great video. Quick question: What's the model number of the Rigol scope you are using in that video?

  • @girishshelly593
    @girishshelly593 5 лет назад

    Please do a video on i2c communication and one wire communication

  • @bandittwothree3765
    @bandittwothree3765 3 года назад

    @3:30; when using pinmode() to set an output the low state is default (all PORTx register power-up defaults are 0, or low). So that chip select line is driven low from the pinmode declaration, then driven high again at spi.begin. You can digitalWrite (cs, HIGH) before a pinmode() to ensure it is never driven low incidentally (or write a 1 directly to the PORTB register). To be fair, this is an omission of the Arduino pinmode() reference page that should note the default state.

  • @MCsCreations
    @MCsCreations 5 лет назад

    Fantastic! 😃
    Can I make a suggestion? Try some LoRa modules. It's a long range communications module and 2 of the most popular long range rc modules (TBS Crossfire and FrSky R9) are based in its chipset. 😉

  • @ankitgupta9008
    @ankitgupta9008 5 лет назад +8

    You can communicate to 16x2 LCD using only three wires by spi shift register ic which is 74h595!

    • @hodissergiu8883
      @hodissergiu8883 5 лет назад +2

      There is no point in using SPI since it's a low speed peripheral, you can use the i2c

    • @Loundre3
      @Loundre3 5 лет назад +10

      You sure can, and its the simplest way if you want to do it serially. I2C is actually quite slow, SMBus on the other hand can do the job faster, but is still slower then SPI (I2C=100kHz+addressing overhead, SMBus=400kHz+addressing overhead, SPI=+1MHZ+little overhead).
      SPI is basically automated shiftregister bitbanging, and can get damn fast if used properly, and its way simpler then I2C and SMBus. But its rather limited and if you use alot of SPI devices (masters and slaves), you will end up with alot of wires, less then with parallel connections, but way more compared to the likes of I2C and SMBus including UART variants (LIN protocol comes to mind).
      This is from my experience with programming in assembler for atleast 3 MSP430 chips (MSP430G2553, MSP430FR4133, MSP430FR6989). Never look one way, seek out multiple alternatives, then you can find your answer easier.

    • @hodissergiu8883
      @hodissergiu8883 5 лет назад

      @@Loundre3 yeah, but for displaying something the i2c speed is enough, you can use more i2c devices before being limited by the speed, (10,12bit adc, temperature sensors etc)

    • @Loundre3
      @Loundre3 5 лет назад

      That is true, but Ankit is asking how to create a option for serial communication for the 16x2 LCD display. For that, he needs a IO extention chip (the 74HC595 is one for outputs). For I2C, i suggest using the MCP23008.
      eu.mouser.com/ProductDetail/Microchip-Technology/MCP23008-E-P?qs=8FMarzwez060sofcCmNWdQ%3d%3d
      For SPI, the 74HC595 (outputs only) will do fine.
      Which chip do you suggest for use with that display for him from your point of view with I2C?

    • @MaxintRD
      @MaxintRD 5 лет назад +1

      @@Loundre3 - The chip on the cheap and popular I2C backpack module is the PCF8574. On my Github you can find the Arduino library I made to reuse that module for other purposes (such as driving the Nokia LCD). For a demo see my channel.

  • @bp3niva
    @bp3niva 5 лет назад

    hello!
    could you please make an 'Electronic Basics' playlist?
    i'm newbie at this and need all of these to be near :)

  • @nnvskh8269
    @nnvskh8269 3 года назад

    U R the best

  • @PaulSpades
    @PaulSpades 3 года назад +1

    Fun fact: SD cards are SPI devices all by themselves, the SD breakout boards just provide some filtering and logic level conversions.

  • @AbheekBackup
    @AbheekBackup Месяц назад

    1:55 just have to say, great soldering

  • @birnbe2505
    @birnbe2505 5 лет назад

    Hey GreatScrott, can you make a vid about an Attiny26?
    That were nice!

  • @limtbk
    @limtbk 5 лет назад

    The main problem with RTC clock (like DS3231) I had was daylight saving time, which causes timezones issue. So if your project is supposed to work less then half of year - then ok, otherwise you have to implement all timezones and calendar stuff...

  • @QG1996
    @QG1996 5 лет назад

    shift register is the magic ic! and then you can use as many cs as you want ;)

  • @sabaku7732
    @sabaku7732 3 года назад

    Hey, great video man!
    btw which country is jlpcb located in ?

  • @weerobot
    @weerobot 5 лет назад

    Must get some Swiss cheese...Great Video thuo..

  • @pirateskeleton7828
    @pirateskeleton7828 5 лет назад

    You could use shift registers or a demultiplexer for the chip select.

    • @Sembazuru
      @Sembazuru 5 лет назад

      Yep. See my GitHub for an example of doing just this with shift registers: sembazuru.github.io/SPI-shift-register-CS/

  • @MrKristian252
    @MrKristian252 5 лет назад

    Hi there GreatScott.
    Many times I stumble upon SPI modules when looking for easy solutions in my circuits.
    I was wondering if there is any kind of device/program/module that can decode/test/analyze SPI communication?

  • @timelesstrance3720
    @timelesstrance3720 5 лет назад

    More!

  • @zap3228
    @zap3228 5 лет назад

    Do you think you can do a video on transistors as amplifiers?

  • @M0XYM
    @M0XYM 5 лет назад

    Scott - any chance of showing a Forth implementation of both SPI and I2C? Any forth would do...