Hangi anlık anahtarın bir STM32 CPU'nun uyanmasına neden olduğunu algılama


10

Düzenleme : Bu soru yanlış. Stm325105 yalnızca bir uyandırma iğnesine sahiptir. Ancak diğer ST parçalarının birden fazla uyandırma pimi vardır, bu nedenle verilen cevap bunlar için geçerlidir.


Uyandırma girişlerine bağlı iki anlık düğme olan bir stm32f105 var. İşlemci BEKLEME MODUNA yerleştirilir. Düğmelerden herhangi birine basıldığında veya RTC zamanlayıcısı tetiklendiğinde, işlemci uyanır.

Sorun, hangi uyandırma girişi tetiklendi bağlı olarak cpu farklı şeyler yapmak istiyorum olmasıdır. Göre 5.3.5 den ST stm32f105xx referans kılavuzu , hiçbir kayıtları biz uyandı oldum gösteren bir durum kaydına hariç korunur (ancak kim tarafından) ve 42 yedek kayıtlar.

Bekleme modu, en düşük güç tüketimini elde etmenizi sağlar. Voltaj regülatörü devre dışı bırakıldığında Cortex ® -M3 derin uyku moduna dayanır. Sonuç olarak 1,8 V alan kapalıdır. PLL, HSI osilatörü ve HSE osilatörü de kapalıdır. SRAM ve kayıt içeriği, Yedek etki alanı ve Bekleme devresindeki kayıtlar dışında kaybolur.

Bekleme modundan uyandıktan sonra, program yürütme Sıfırlamadan sonra olduğu gibi yeniden başlatılır (önyükleme pimleri örneklemesi, vektör sıfırlaması getirilir, vb.). Güç kontrolü / durum kaydındaki (PWR_CSR) SBF durum bayrağı, MCU'nun Bekleme modunda olduğunu gösterir.

Bu ST forum yazısı, Beklemede Uyandırma'nın kökeni nasıl belirlenir? , yazılımda hangi uyandırmanın tetiklendiğini tespit edemediğimi gösterir. Orada daha fazla aydınlanma veren başka gönderi bulamadım.

Uyandıktan sonra hangi uyandırma girişinin tetiklendiğini belirlemek için yazılım veya donanımı nasıl kullanabilirim?


1
Düğmenin bir kapağı
doldurmasını sağlayın

1
Birkaç STM32F105 varyantına baktım, sadece bir uyandırma pimi var. Tam olarak hangi kısmı ve hangi iğneleri kastediyorsun?
berendi -

@berendi STM32F105, dediğin gibi, sadece bir uyandırma iğnesine sahip. Sorumda belirttiğim gibi STANDBY modunda değil STOP MODU şeklinde yapılandırılmış. Uyanmak için EXTI olaylarını kullanır. Bu "EXTI olaylarının" anlamını "uyandırma pimleri" ile karıştırmıştım. Ama sanırım Olin tarafından verilen cevap, STANDBY MODE'da "RTC tarafından uyandıran" veya "uyandırma pimi ile uyandıran" arasında ayrım yapmak gerekirse hala yararlıdır. Herkes bu soruyu Olins cevapla eşleştirmek için nasıl düzenleyeceğine dair önerileri var mı? Başlangıçta neyin yanlış olduğunu açıklayan küçük bir not? Tüm yeniden düzenleme? Yoksa tüm soruyu silmeli miyim?
Daniel Näslund

1
Tek bir uyandırma giriş bayrağı bulunduğundan, kaynağın bekleme modundan çıktıktan sonra gerçekten belirlenemediği F0, F3, L0 veya L1 gibi birden fazla uyandırma pimine sahip ST denetleyicileri vardır. ST, her bir uyandırma girişi için ayrı bayraklara sahip en yeni F7 ve L4 serisinde bu gözetimi düzeltti.
berendi -

Yanıtlar:


11

Bu ST parçasının ayrıntılarını bilmiyorum, bu yüzden açıklamanızın doğru olduğunu varsayacağım.

Her iki düğmeye basıldıktan sonra işlemci çok erken uyanmalıdır. Bu, dahili bir RC osilatörüne sahipse özellikle doğru olmalıdır. Sonunda doğruluk nedenleriyle bir kristalden koşmanız gerekse bile, belki de parçayı dahili bir RC'den başlatabilir ve daha sonra kristale geçebilirsiniz. Seninkinin onlardan biri olup olmadığını bilmememe rağmen, böyle şeyler yapabilen mikrolar var.

Her durumda, her iki girişi de uyandıktan sonra mümkün olan en kısa sürede okursunuz. Bu ST mikro hakkında olağandışı bir şey olmadığı sürece, düğmeye basmadan ms'den birkaç ms'ye kadar olmalıdır.

Hattın hala düşük olduğundan emin olmak için, düğme bırakıldıktan sonra hattı 100 ms'ye kadar düşük tutmak için bir kondansatör kullanın.

Örneğin, garantili mantık düşük giriş seviyesinin besleme voltajının% 20'si olduğunu varsayalım. Hat bir dirençle çekilir ve toprağa bir kapasitör bulunur. Düğme çizgiyi toprağa kısaltır. Bu nedenle çizgi yüksekte yüzer ve düğmeye basıldığında aktif olarak toprağa zorlanır. Düğme bırakıldığında, voltaj katlanarak kaynağa doğru azalır.

Nihai değerin% 20'sine kadar azalma 0.22 zaman sabitinde olur. Diyelim ki bir düğmeye basıldıktan sonra hattın 100 ms boyunca düşük görünmesini garanti etmek istiyorsunuz. Bu, RC zaman sabitinin 450 ms olması gerektiği anlamına gelir. 100 kΩ çekme ile kapasitansın 4.5 uF olması gerekir. Böylece 4,7 µF 10 V kapak iyi sonuç verir.

Özetle, devre şu şekildedir:


1
Diğer taraftan, STM32'ler yükselen kenarda uyanır. Ayrıca, afaik her zaman dahili saat ile başlar, harici kristale geçiş ve pll yazılım tarafından yapılır. Sorun, saat ağacı kurulumundan önce kullanıcı kodunu çalıştırmayı biraz zorlaştıran CubeMX aracı tarafından sağlanan veya oluşturulan başlangıç ​​kodundadır.
berendi -
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.