I got a Bachelor's degree in electronics and a Master's degree in robotics and mechatronics. Currently, I am doing my PhD in robotics. I've always had a keen interest in robotics and used to spend hours developing robots and devices. I dream of building an educational platform on robotics to make knowledge accessible to everyone and to help beginners and enthusiasts who want to grow into professional engineers. Why Steppeschool? Mastering robotics requires not only understanding theoretical and practical aspects but also implementing very abstract ideas into practice. My aim is to equip YOU with the necessary theory and reinforce YOU to use it practically.
Sorry ! You only record in a half of data_i2S buffer with statement :HAL_I2S_Receive_DMA(&hi2s2, (uint16_t *)data_i2s, sizeof(data_i2s)/2 but you write data in full data_i2S buffer in SD card with statement write2wave_file(((uint8_t*)data_i2s), WAV_WRITE_SAMPLE_COUNT); Can you explain to me?. Thank you very much!.
Hi Why uart sends data reversed For example If I want to send 1139(ascii) = 0473(hex) When uart sends data i have 7304(hex) in my computer How I can prevent this?
@@steppeschool3629 okay. you mean fir_instance[12], fir_in_arm[12] and fir_out_arm[12] is only modification in program for 12 ADCs? or something more nedded? am I correct?
Thanks for the video and a great tutorial. Could you do a video on how we use stm32 to make USB microphones? I would like to connect two or more microphones and record the multichannel sounds.
hey I have one doubt I want to connect more led stripes in parallel then i want use the different timer pwm but I have problem in the configuration DMA request another timer dma does not show that dma trigger option But I will change the code like that but my code run only single timer In my main c this for tim 2 reset_all_leds(leds, NUMBER_OF_LEDS); HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_3, (uint32_t*)leds, NUMBER_OF_LEDS1 * 24 + 24); HAL_Delay(300); set_all_leds(leds, NUMBER_OF_LEDS1); HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_3, (uint32_t*)leds, NUMBER_OF_LEDS1 * 24 + 24); and this one is same code tim 3 led_pos_counter++; if(led_pos_counter == NUMBER_OF_LEDS) { led_pos_counter = 0; } temp_neo_pixel = circular_pattern_led[led_pos_counter + NUMBER_OF_LEDS]; circular_pattern_led[led_pos_counter + NUMBER_OF_LEDS]; circular_pattern_led[2* NUMBER_OF_LEDS]; HAL_TIM_PWM_Start_DMA(&htim3, TIM_CHANNEL_1, (uint32_t*)&circular_pattern_led[led_pos_counter], NUMBER_OF_LEDS * 24 + 24); HAL_Delay(100); circular_pattern_led[led_pos_counter + NUMBER_OF_LEDS] = temp_neo_pixel;
Here is a note in datasheet, `Low Byte of Gyroscope Y-axis data. To convert the output of the gyroscope to angular rate measurement use the formula below: Y_angular_rate = GYRO_YOUT/Gyro_Sensitivity` What is Gyro_Sensitivity ?
You just define the full-scale range (250 dps, 500 dps, etc) using a register of the IMU senor. Based on that you can compute the gyro sensitivity. For the full info, you can refer to my course: www.steppeschool.com/courses/stm32-hal-orientation-estimation
Sorry for the late reply. We just read 6 bytes for magnetometer data (2 bytes x 3 axes) and 2 additional bytes, so the magnetometer will update the readings. We just do serial read starting from MAG_DATA_ONSET. For full info, you can refer to my course: www.steppeschool.com/courses/stm32-hal-orientation-estimation
Great Job. How do I get to interface mpu6050 with stm32 so that I only get readings anytime there is an interrupt coming from the interrupt pin of the mpu6050 when there is linear or rotational movement?
Thank you for the video and a great tutorial. If you don't want to remove the microphone from the board then switch to I2S3 instead and follow the tutorial. The recordings will be done without any hassle :)
I got error " undefined reference to 'arm_rfft_fast_init_f32'. I imported the DSP library as you mentioned in the other videos. Why i am stille getting the error?
nice work. can i get all the files and code for your all videos when i join to steppeschool or i need to jion through patreon. which one i need to choose. cammant your answer please. i really like your videos and excited to making it my own.
Hello Stepp School. I have everything setup as explained, yet im never able to enter the callback, i feel i have followed everything, do you have any idea as to what could be the reason as to why my callback is not working? I have enabled IT on my timer, i have run the HAL_TIM_Base_Start_IT(&htim2); and i have created a callback function with some actions to take during the interrupt. All i have in my main loop is a delay, and its just stuck in there, the interrupt never fires.
@@steppeschool3629 For now, i am just using the live expressions and breakpoints. i also have an oscilloscope set up to sniff what is happening on my board, regarding the pins i am working on. Right now the frequency of the function is 100ms, my idea is i have to set the interrupting timer to fire first at 100ms, make a change to my signal and set the next interrupt in 9,9seconds, so 10 seconds total, make another change and that is it, after that just stop the timer. However i tried something simple, just toggling a pin at 1000Hz, not seeing anything there either. i have used this in other programs, and worked just fine. I think im going to try to restart the entire project and start with just this functionality and see what is going on.
Thank you for this video. It saved me lot of time. Can I also ask how to detect the event of disconnecting the USB cable? Otherwise, in such event, the output buffer keeps playing with no new data coming which makes annoying sound.
Inside usbd_audio.c, there is a function USBD_AUDIO_IsoOutIncomplete. Most probably, this function is invoked when the USB cable is disconnected. You can check it by using breakpoints or printing some messages. If this is the case, you can signal the audio speaker to stop audio streaming.
@@steppeschool3629 This worked. Thank you again! I also discovered, that there are functions HAL_PCD_SuspendCallback() and HAL_PCD_ResumeCallback() in usbd_conf.c that can be used for this purpose as well.
When i am copying hal_statustypedef in another c file then it is not coming as Library function , hal_ok is also coming as simple line not as function. Can you please help me why it is happening . There is syntax error coming.
Excellent work please tell me the motor voltage rating & rpm rating and torque and max current , also size of wheel diameter, in short please give the links for motor & wheels of pololu
I figured that diff gain also increases response speed to perturbations of the motor speed, so that it may be possible to reduce the P gain... In your demo, it seems that you are showing the response from an uncontrolled state to a controlled state, rather than response to a perturbation of the load? Or? But, I'm just some old guy, who never did learn the mathematics part, more of a "hands-on" and conceptual driver.... 😀
It would be interesting/useful, to show, on the graph of the motor speed, the PWM value that is applied, so that we could see the action of the differential and proportional functions make the quick response of the PWM, and the slower changes due to the integral part... Hmmm... Possibly also show the values of each of the three correction terms? But, maybe that's in the next video?
I am not sure but I think your convolution formula should be y[n]= sum of (x[n-k] x h[k]) with k=0 to k=N ( N order of the filter). not sum of(x[n-k] x h[n]). I am sorry, I may be wrong!
Looks like nice way to handle "edge conditions".... I haven't read the timer information, yet, so I was surprised to see overflow on such a low speed operation. Thanks!
Hello, thank you for your video, but i have a major problem, when i go to debug configurations and try to enable the SWV, i can tick the option... would you have an idea about how to resolve this problem and why it occures ?
I debug the code and open window panel and click on swv viewer and ticket the Bo bit ,then click on ok , then click on trace button and click on resume run code but " trace button gets disabled" and program shut down unexpectedly what to do
There is an arm math cmsis library that allows us to do linear algebra operations within the MCU. You can get full information on my course: www.steppeschool.com/courses/stm32-hal-orientation-estimation