2023-05-24 08:09 AM
Hello everybody,
I am trying to bit-bang an I2S interface on an STM32F103 at 72MHz using TIM2.
Am I way too optimistic to get a 3MHz "clock" out on a pin? The fastest I can seem to get it is at 90kHz.
I have set the "prescaler" of TIM2 to "0" and "1".
And, I have set the auto reload register at 11 with an interrupt writing "0" and "1" to a GPIO pin.
And Channel 1 set as "Output comapre no output" as well as "PWM1 output" on PA15.
The CPU and timer frequencies are 72MHz.
Any suggestions? (other than get an STM32 with I2S ;) )
Kind regards,
pieterg!
Solved! Go to Solution.
2023-05-24 10:51 AM
Well, there are some users who torture themselves with the emulation of I2S. However, it should be possible to emulate I2S with the STM32F103 as well, as a search with your favourite search engine for e.g. "+I2S +emulation +STM32" will reveal.
Among other things, you should then also find the AN5086, which deals with the topic and implements it with SPI and a timer on a Cortex-M0 (STM32L0).
There is also a bare-metal idea with an STM32F1 here.
Maybe that will help you?
Regards
/Peter
2023-05-24 10:51 AM
Well, there are some users who torture themselves with the emulation of I2S. However, it should be possible to emulate I2S with the STM32F103 as well, as a search with your favourite search engine for e.g. "+I2S +emulation +STM32" will reveal.
Among other things, you should then also find the AN5086, which deals with the topic and implements it with SPI and a timer on a Cortex-M0 (STM32L0).
There is also a bare-metal idea with an STM32F1 here.
Maybe that will help you?
Regards
/Peter
2023-05-26 02:51 AM
Hello Peter,
Thank you so much for the quick response!
I have followed the application and the logic analyser results looks very promising.
I see a 2.286MHz clock now (as expected for the CubeMX settings) and I have the "WS" signal from a timer as per the application note.
Kind Regards,
pieterg!
2023-05-26 03:22 AM
Great!
When the problem will be solved, please mark this thread as answered by selecting Select as best, as also explained here. This will help other users find that answer faster.
Good luck!
/Peter
2023-05-31 04:55 AM
Hello Peter,
I am still struggling with this.
I have read the application note, but the section of the TIM settings "confuses' me. And I am sure my configuration is wrong, but where?
In CubeMX my "TIM2" settings are:
Trigger Source: ETR1 (connectedt tp SPI-SCK)
Clock Source: Internal Clock (is this APB1 or APB2 timer clock?)
Channel 3: "Output Compare CH3"
Then "Counter Settings":
Counter Period: 31 -> as per application note
auto-reload preload: Enable
Then Output Compare Channel 3:
Mode: <not sure what this must be. I have tried "all" of them>
Pulse: 15 -> as per application note
Output compare preload: Enable
CH Polarity: High
I have set my SPI2 as follows:
Data size 16 bits
prescaler 256 for 125kbps baudrate
Thank you so much in advance.
pieterg!