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 - Наука
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.
I learned somthing new about spi
@@parisgr i am thinking the same think wtf !!?
You guys should support the channel - Patreon!
@@parisgr how !?
That's incredible, everytime I discover a new thing needed for my project, you got a video about the subject :)
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.
Nicely done Scott, thank you again for your dedication and time spent to share your knowledges, best wishes from Spain 🇪🇸
Hi
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 ;)
Great info about the chip and thanks for sharing it.
The 3231 has the calendar, alarm and square wave output, too.
Commonly used on Raspberry Pis
I was intending to let him know about the pronunciation of "read", glad I don't have to :)
thank you so much person
Really you are doing very good job. You are inspiring many minds to be creative. As always stay creative. Thank you Scott
Thanks GreatScott! This video helps me a lot to understand how spi works. As always your videos are awesome...
scott loved your video.
you made such a vast topic soo easy.
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. ☑️😋
Super high quality explanation. Clear and concise. I loved the way you presented.
Excellent video. You just came right in time, as I started playing with SPI devices recently. Thanks to you, all is much clearer now :)
Thank you for another great video. I learn something new every time I watch one of your videos.
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
Love the detail you when into!! More videos like this please!!! Love your videos !!
"the datasheet spoiled the surprise"
I just love your humor!
I love these types of videos
Gosh I love these videos but it's always the programming that holds me up. More videos on programming please!!
Please never stop making videos
Awesome....!!! SPI register explanation super....looking forward to see many videos on basics....👍👍
Wow, that was really comprehensive. I’ll definitely use this as a reference!
scott, you're one of my heros, i learned so much from your videos.
Glad you like them
Thank you for this one!!
I think you could do a whole series of I2C and SPI examples like a cookbook.
Finally got it on sunday .
Waited for your video every week .
Thanks for watching :-)
Thank you for the jlcpcb Site. This is just amazing
You're welcome
Basics !!! This is super hit. I am equipped with writing library for SPI devices...lol....
Thank you so much. you have simplified the details so much :)
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
Nice and Informative session. Thanks
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
Great video! Thank you for sharing!
You are really great, good voice and subject is clear
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!
You're welcome
Great Scott,u r always great!!.What an explanation sirji!!🙇😇
Quality contents, should be mandatory to view before any other video ;)
Fantastic video
Thank you for this video!
Cheers great video I'm going back to watch i2c .
Always with the best.
Awesome video, thanks!
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?
good presentation
Love your videos!
Oh Also EasyEDA is totally awesome. I found it 6 months ago and love it. I switched from KiCad
Well explained! Thanks!!
Great great great explanations, thank you!
Your videos are interesting
Great video!
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?
It is on my to do list
Great led cube intro, make it bass boost
I wait for your video.....every Sunday...
I hope they are worth the wait.
this video is really helpful....
Very nice video sir.
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.
it was an amazing video! thanks!
Nice video
One thing i have noticed is Great scott and Electronoobs uploads their videos one after the other on the same day
good job man!
Useful video
sir in India 5 th sem is celebrated as teachers day.
so happy teachers day.
as u become my greatest learning source .thanks
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!"*
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 ?
Nice info, thanks :)
THANKS BRO JUST NEEDED THIS VIDEO!!!!! 👌👌👌👌👌👌👌
Awesome!
Thanks for sharing😀👍
I just loved this.
Bro can you do a video on aurduino parallel communication
Good video. 👏🙌👍👌
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).
Love your tech tecniqe
Thanks
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 :)
Thank you for great video. Would it be possible to create a "playlist" for your "Electronic Basics" videos?
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.
A decoder/demultiplexer can be used for CS or /CS duties and free up pins on the micro.
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.
Nice video. Any chance you could explain the 4 wire SPI used on TFT displays?
hi from Turkey
Great tutorial, very understandable. Which Oscilloscope are you using?
You should try making a wind turbine btw love your videos
Would have loved it if you showed the frame rate difference between the two interfaces on the same/similar display!
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!! 👍
Thank u Great Scott for another great instructional. Great idea to test the SPI module first by making it output a square wave. Thanks !!
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
Stabilo point 88😉
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.
Acott, thanks for another great video. Quick question: What's the model number of the Rigol scope you are using in that video?
Please do a video on i2c communication and one wire communication
@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.
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. 😉
You can communicate to 16x2 LCD using only three wires by spi shift register ic which is 74h595!
There is no point in using SPI since it's a low speed peripheral, you can use the i2c
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.
@@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)
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?
@@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.
hello!
could you please make an 'Electronic Basics' playlist?
i'm newbie at this and need all of these to be near :)
U R the best
Fun fact: SD cards are SPI devices all by themselves, the SD breakout boards just provide some filtering and logic level conversions.
1:55 just have to say, great soldering
Hey GreatScrott, can you make a vid about an Attiny26?
That were nice!
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...
shift register is the magic ic! and then you can use as many cs as you want ;)
Hey, great video man!
btw which country is jlpcb located in ?
Must get some Swiss cheese...Great Video thuo..
You could use shift registers or a demultiplexer for the chip select.
Yep. See my GitHub for an example of doing just this with shift registers: sembazuru.github.io/SPI-shift-register-CS/
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?
More!
Do you think you can do a video on transistors as amplifiers?
Scott - any chance of showing a Forth implementation of both SPI and I2C? Any forth would do...