My Footprint Editor library does not have the USBL footprint in it...why? IF you change the pins on a symbol, do you have to change the pad numbering in the footprint editor as well?
@Narindersingh-ss7pb23 години тому
Har har Mahadev
@exeu67День тому
Your videos are an inspiration and well done. It would be so nice of you at least for some pcbs you go back to use kicad instead of altium. Altium is nice but not affordable for most of the hobbyists watching your videos. Other than that: keep it up.
@ZoltanHatos-vy1xeДень тому
Phil - Fantastic series - The attention to detail, tips and design considerations are highly beneficial !!
@gino3286День тому
sorry at a couple hundreds from where ? i see more like 600USD
@JoelCranmerДень тому
Great video! Just curious why you chose C34/35 to be 220nF as opposed to the value shown in section 16 of the datasheet of 104 (which corresponds to 100nF).
@PhilsLabДень тому
Thanks! That's for BoM consolidation. I needed a specific 220n cap for a pin of the magnetometer, but the actual decoupling value for the rest of these parts is not a precise, required quantity.
@AngryMosfet2 дні тому
Hey Phil, your symbols are looking clean! Could you go over your current libraries in Altium? How you structure them, how you put text in the center of the symbol aka caps, res, ic, and any other useful tips you believe are worth mentioning. Thank you!
@mwafakaljabi96112 дні тому
Hey Phil, is there actually a part 2? Thank you
@sergiohiguera3062 дні тому
This tutorial is excellent! I had always wanted to feel comfortable using a tool like KiCAD and had never found a video describing the features/functions so well, from the view of an experienced professional like you. Thank you!! I wanted to ask, when you place the Vias to jump over other traces, you said you make the Vias a bit larger; what size do you usually make them, as well as the ones next to the large Ground pads, which are also larger than the rest?
@tgirard1232 дні тому
These videos are so darn good! I don't mind having to go through them multiple times. There is so much to learn. Just subscribed And became a patreon.
@PhilsLabДень тому
Thank you very much for your support, I really appreciate it!
@d1zz3l3 дні тому
Best guide how to control adressed leds
@PhilsLab2 дні тому
Thank you!
@kargausa5533 дні тому
Great demonstration and details, thank you!
@ruilianglin3 дні тому
Great video as usual! I tried your implementation and found a quirk When running at a slower clock speed (64MHz) where the driver didn't work properly. After sending the PWM data frame once, *_SK6805_DMA_COMPLETE_FLAG_* would get stuck at 0 forever. Turned out, when the clock speed is low, *_HAL_TIM_PWM_Start_DMA_* would finish transfering PWM data to the timer so quickly that *_SK6805_Callback()_* is called BEFORE the code enters *_if (halStatus == HAL_OK)_* in order to clear *_SK6805_DMA_COMPLETE_FLAG_*. Basically, *_HAL_TIM_PWM_Start_DMA_* is called, then *_SK6805_DMA_COMPLETE_FLAG_* is set to 1 by *_SK6805_Callback()_***, but immediatly after ***_SK6805_DMA_COMPLETE_FLAG_* is set to 0 when we finally run *_if (halStatus == HAL_OK)_*. My quick and dirty solution is to ditch *_if (halStatus == HAL_OK)_* and clear *_SK6805_DMA_COMPLETE_FLAG_* before *_HAL_TIM_PWM_Start_DMA_*. There's for sure a more elegant solution.
@PhilsLab3 дні тому
That's very interesting - thanks for sharing! Oddly enough, I haven't come across that myself (even on a G0 MCU running at 64MHz). Another (not particularly elegant) approach would be to check the complete flag in the while(1) loop in main.
@sigmaxi78224 дні тому
The STM32U5 seems to handle the DMA/TIM transfer quite differently than other STM32s. I once implemented a WS2812B driver with 4 channels of 128+ LEDs each on an STM32F30, using the same principle. The key to making it work there was to 1) trigger DMA transfers via the TIM CC event (not at the end of the period) and 2) enable AutoReload preload, such that the new value is written to the register before the end of the PWM period. Otherwise it would output each bit value twice because the AR value was not updated fast enough. In this video for the STM32U5, it seems that DMA (or the HAL?) appropriately times the transfer such that there is a new AR value ready for each PWM period, without having to enable AR preload.
@PhilsLab3 дні тому
Interesting to hear that that's the case for that MCU, thanks!
@ianlee64164 дні тому
I prefer the sk9822 led using the spi peripheral or simply bit-bang it. Just takes one more pin.
@rallymax24 дні тому
Nice job, especially going through the schematic, which a lot of people struggle with.
@PhilsLab3 дні тому
Thank you!
@chadkrause65744 дні тому
Love your videos! How do you figure this stuff out in the first place? Keep up the good work!
@PhilsLab4 дні тому
Thank you! Mainly via the datasheet, past experience/knowing the peripherals, looking at open-source implementations, etc..
@FRANCISCOPEREZ-eh5xs4 дні тому
Amazing video
@PhilsLab4 дні тому
Thanks!
@ksbs20365 днів тому
Really nice presentation. Thanks
@PhilsLab4 дні тому
Thank you!
@alaeddinekh37165 днів тому
very nice video as usual. a little question, how can i detect if there are some abnormalities concerning the functionality of the rgb led (e.g. LED Strip ) Danke.
@PhilsLab4 дні тому
Thank you! Not that I'm aware of with a single-wire implementation.
@Jonathan-ru9zl5 днів тому
Notice that you can go with one partition approach (boot partition) because rootfs is copied to image.ub. There are pros and cons to this approach.
@triplebig5 днів тому
I'll never understand why Altium sponsors a hobby channel but doesn't offer a hobby license -_-
@tgirard1232 дні тому
It's really sad. I guess they really think that all these hobbyists are going to love their tools so much that they'll pay. Good luck with that. I'll just stay with KiCad thank you...
@christiankoch46275 днів тому
Due to the nested for loop the set function is really slow.. Not suitable for fast led driving
@PhilsLab5 днів тому
Can be yes, but for my needs in this case this is sufficient and for a tutorial this is a simple demo to get the basics across.
@smaroukis5 днів тому
Perfect timing! I was just wondering how to use DMA to update PWM/brightness levels for a custom seven segment video display wall I'm building. Good concise demo. I'm guessing this is how libraries like SmartLED (nee SmartMatrix) work under the hood?
@PhilsLab5 днів тому
Thank you, hope it's useful! From what I've seen, many openly available libraries have a very similar foundation to this. There are however a number of improvements that could be made (memory requirements, speed, ..).
@werelwolf5 днів тому
These videos are SO good, thank you for producing them!
@PhilsLab5 днів тому
Thank you, I'm glad to hear that!
@robby0910005 днів тому
I was literally looking into how to do this for a set of leds last week and finally figure out how to configurate the DMA with the timer after not being able to find a good guide that use the GPDMA!!! Now im looking into options that allow me to do a similar function with simpler microcontrollers without DMA to Peripheral interfaces that dont rely on CPU nop instructions to delays pulses
@PhilsLab5 днів тому
Yeah I haven't found a good guide on setting up GPDMA either :(
@mwafakaljabi96115 днів тому
Thank you for the great Video as always. Is it professionally ok to always use HAL libraries instead of writing our own bare metal code?
@PhilsLab5 днів тому
Thank you! Sure, I've seen HALs used in development for many products.
@sundinmikael5 днів тому
If you want you can optimize the color DMA update byt using a lookup table of 16x32bits values (LED 4bits). Then you only need 6 writes for RGB values. This works due to you using 1byte for the PWM.
@mrdiv84185 днів тому
Thank you! I've learned a lot. Hopefully, one day, I will be so qualified!
@PhilsLab5 днів тому
Thanks a lot for watching!
@tamaseduard51455 днів тому
👍🙏❤️
@SmashCatRandom5 днів тому
I used the WS28xx LEDs in a previous project, and just used DMA=>SPI peripheral; expanding out the bits in a frame-buffer in RAM so that a high bit = 110, and a low bit = 100 in the stream from the MOSI port (CLK not used). Those LEDs don't really need precise timing, so it was reliable and pretty simple to implement really - although a little bit wasteful of RAM, as it obviously needed 9 bytes for each 24bit colour value. 😁
@szymon46025 днів тому
By additionally using a down count timer in capture mode and directing the MOSI and MISO data to a port (preferably a port that has only the least significant two bits, PORTF - in many MCUs), and using one more DMA channel from overflow, this can be done completely in hardware, using only as many bits (RAM) as SPI needs for such sending.
@bencemarta52225 днів тому
I love these kind of elegant solutions. At work, I always take the time to write libraries that take advantage of the hardware on this level. One thing I don't really like though is the fact that each bit needs a byte of buffer space to be sent out. This may limit the capabilities of lower end microcontrollers with less memory (And I love the G0 series from ST). I have recently given some thought about using the SPI peripheral with DMA and a timer with some minimal external hardware so that I can control a lot of these LEDs basically without any CPU and memory overhead. It didn't get far but I figured that by using 2 timer channels to generate low and high pulses selecting the right one using MOSI and resetting the timer using the SPI clock, it can be achieved by purely using the SPI peripheral in DMA mode. It would of course be a trade-off but in projects where memory is a constraint, it could be useful. I will certainly do it during summer.
@PhilsLab5 днів тому
That's very true regarding the space needed for the DMA buffer. Interesting idea you have there with SPI + the two timer channels - looking forward to hearing about the results!
@javaguru71415 днів тому
Wow, that sounds awesome. I would love to see a reference implementation!
@blanchehermine5 днів тому
HAL is hideous.
@casualnoises28085 днів тому
This is a very elegant solution!!! Thanks for the detailed explanation Phil!!!
@PhilsLab5 днів тому
Thank you!
@cakeforcat5 днів тому
Nicely put together! What's your opinion on hijacking the SPI peripheral for this purpose? (sorry if this is mentioned in the video, can't watch it right now)
@PhilsLab5 днів тому
Thank you! Haven't actually tried with SPI yet, but my first thought is that would by default enable more pins than needed on the MCU. Question is how to repurposes the unused SPI lines (CLK) if needed. The timer approach is quite straightforwardy (also peripheral/pinning-wise), so I don't really see a reason to not use it - unless free timers aren't available.
@hippie-io72255 днів тому
Thanks. I really enjoyed how you abstracted your code from low-level (hardware) to high-level (firmware). I have not used a STM IDE since 2010. Any opinions on this current IDE and a beginners (for the IDE) learning curve?
@PhilsLab5 днів тому
Thank you! Despite some occasional bugs, CubeIDE is my favourite (Eclipse-based) IDE. The whole pin-out, peripheral, clock, etc.. config makes set-up far more straightforward than many other system, in my eyes. Plus there's a large community behind all of this.
@hippie-io72255 днів тому
@@PhilsLab Thanks!
@emielv76775 днів тому
The protocol is very simple but getting the timing right without sacrificing a lot of processing time is quite difficult in my experience 😅
@GaborGubicza5 днів тому
Thanks Phil, I'm just working on my first Addressable LED project: 50+ LEDs per row.
@PhilsLab5 днів тому
Very cool, good luck with your project!
@thomasyunghans18765 днів тому
Hi Phil, At 14:45 you used the Altium layer stack manager to determine the width of a 50 ohm trace to be 0.3mm. I thought that sounded pretty large for the dielectric thicknesses you typically usually use in your projects. Looking in detail at the layer stack manager, it looks like you selected a 0.075mm (3mils) dielectric thickness between layers 1 and 2, which seemed reasonable, but it looks like you used a dielectric constant of "1" for that dielectric, which is the dielectric constant for air! You got the 50ohm trace you wanted from a simulation perspective, but that seemed like a strange way to do it.
@ankurnaidu5 днів тому
great video there Phil! May i ask from where did you learn Embedded Coding and Firmware coding since your codes are immaculate.
@PhilsLab5 днів тому
Thank you, Ankur! Mainly by working on various projects (personal and for work). It's predominantly self-taught via online resources, books, example code, etc..
@jakep84846 днів тому
Very cool! I'm pretty new to dsp designs so I'll have to watch your other videos, thanks.
@thomasyunghans18766 днів тому
Well done! I was also surprised (like a few others who commented), at the amount of manual labor that seemed to be involved. I was expecting a lot more automation. I did notice a small thing at about 4:12. You said that for a 2 layer board you would go from step 2 (board cutting) directly to step 9 (Image the outer layers). I think you should have said to go from step 2 directly to step 7 (drilling the PCB). I would assume that a 2 layer board still needs to be drilled and the holes electroless plated. Thanks for the video, it was very informative.
@kesaramalinda75916 днів тому
As an intern, these 101 videos are GOLD . Thank you for these videos.
@sherahstevens25857 днів тому
Where can I get this Board just the way it is.
@unixux7 днів тому
Are you selling those ? I suffer from debilitating board hoarding and would most definitely love to snipe one
@xinox737 днів тому
Ni hao
@mr.shredder54307 днів тому
amazing
@ROY-yz9lb7 днів тому
video no 90 ukposts.info/have/v-deo/saiGk4GuaZqWkWw.htmlsi=Ircdvo6562YIWOen
@L2-Lagrange7 днів тому
Bookmark
@jaimans8 днів тому
Great tutorial, Phil! I subscribed immediately... I cannot find the link to the reference files. Can you please share them again?