解決(?)
解決策を求めて、STM32のマニュアルを眺める。
リファレンスマニュアルの770ページ。
引用
0.5 stop bit (reception in Smartcard mode): No sampling is done for 0.5 stop bit. As
a consequence, no framing error and no break frame can be detected when 0.5 stop bit
is selected.
ここまで
うーん、スマートカードモードに、って書いてあるけど、0.5ストップビットなのは送信時だけで、受信時はストップビットを見なくなるんじゃないかな?
内部ロジックを想像してみても、フレーミングエラーが出なくなる、ってのもそれっぽい。
------
思い立ったらテスト。
送信側は、昔作ったLPC2129ボード。
7ビットパリティなしの設定でテキストデータを送信。
LPC2100なので、この設定での動作もできる。
受信側はいつものSTM32F103ボード、8ビットパリティなし、0.5ストップビット設定。
ざっと動かしてみる。
問題なく正しくデータが受け取れる。
------
要するに0.5ストップビット設定は、事実上0ストップビット(?)の設定か。
受信データのMSBは送信データのストップビットがサンプリングされるので、ロジック1固定となっている。
正しく(想像通りに)動作しているようだ。
データは、上位1ビットをマスクして、残り7ビットを使う。
フレーミングエラーがほしければ、自分でデータのビット7を監視すればよし。
で、データが連続していても8ビット目をサンプリングした時点で、受信側のシーケンサは初期値に戻り、すぐ次のスタートビットのエッジに同期することが出来ているようだ。
当たり前だけど、受信エラーの類も出てなくて、ごく普通に動作している。
めでたく(?)7ビットパリティなし(事実上)のデータ受信が可能になった。
これで、60KHzインターバル割り込みを廃止できるはず。
------
こういったものは、パズル的な要素、推測が楽しい。
電子工作の楽しみでもある。
stm32はこんな使い方もできる、と紹介するものでもないし、これについてオフィシャル(STとか)に投げて困らせるものでもない。
趣味でこそ、の楽しみ。
こんなの仕事とか宿題で使っちゃいけませんよ。
イザという時に、裏でごそごそやるために、ストックしておく....
------
それはそれとして、STM32F103とほぼ互換で低消費電力の、STM32F15xなんてチップも有るのに気づいた。
現状ただのリップルカウンタでしかないSTM32F103のRTCも、ちゃんとしたRTCにアップグレードされていて好印象。
このあたりのコンビネーションで、目標は達成できそうだ。
------
解決策というのは、たいてい足元に落ちているものだ。
| 固定リンク | 0
コメント