Konunun hikayesinden başlamak gerekirse, STM32F0 ve STM32F1 serisi işlemcilerden oluşan ve CAN Bus üzerinden birbirleri ile haberleşen bir tasarım üzerine çalışıyordum. Her bir kart için CAN Bus bağlantısının yanında bilgisayar bağlantısını da kurmak için USB bağlantısını sisteme dahil etmiştim. Bu tasarım STM32F0 serisi işlemcide CAN Bus ve USB sorunsuz çalıştı.
STM32F1 serisi işlemciyi kullanırken aynı yazılıp mimarisi üzerinden devam ediyordum ancak bir sorun ile karşılaştım. Bir şekilde CAN Bus hattını kullanamıyordum. Problemi araştırmaya başladığımda USB ve CAN Bus'ın birlikte kullanımı ile ilgili başka problem yaşayanların da olduğunu gördüm. Sonrasında kullandığım işlemci olan STM32F103CB'nin datasheetini (Reference Manual RM0008 Rev 21) inceledim. CAN Bus kısmında aşağıdaki gibi bir not olduğunu gördüm.
"In low, medium-, high- and XL-density devices the USB and CAN share a dedicated 512-
byte SRAM memory for data transmission and reception, and so they cannot be used concurrently (the shared SRAM is accessed through CAN and USB exclusively). The USB and CAN can be used in the same application but not at the same time."
Buradan anladığımız CAN Bus ve USB işlemci üzerinde aynı SRAM alanlarını kullanıyor ve bu yüzden her iki çevre birimi birlikte kullanılamıyor. USB'yi kapatıp CAN Bus'ı çalıştırmak veya tam tersi mümkün ancak her ikisi aynı anda asla çalıştırılamıyor. Bu yüzden örnek vermek gerekirse CAN Bus üzerinden alınan bir veriyi USB üzerinden gerçek zamanlı alıp işlemek mümkün değil.
Ek olarak STM32F0 serisi ile bir çok uygulama yapmıştım ve bu yüzden USPDP, USPDM hatlarını direkt konnektöre bağlamıştım. STM32F103CB işlemci kullanırken USBDP hattına 3.3 V'a 1.5 kR pull-up resistor gerekiyormuş.
STM32 USB kullanılan uygulamalarda donanım tasarımı hakkında aşağıdaki doküman yayınlamış. Donanım tarafında yapılması gereken işler tek bir dokümanda bütün işlemci ailesi için verilmiş. Gelecek tasarımlar için işe yarar gibi görünüyor.
Link: https://www.st.com/resource/en/application_note/an4879-introduction-to-usb-hardware-and-pcb-guidelines-using-stm32-mcus-stmicroelectronics.pdf (10.01.2024)