2025年10月22日水曜日

バッファ操作マン (STM32)

オレってこないだまで動画編集マンだったじゃん.
秋の展示会シーズンに向けた準備だったので、動画編集作業は終わった.

それで次の仕事は「バッファ操作マン」になっているんだ.
オレみたいなただのホビーストがやってるんだからなかなか進まない.

以下のような仕様であり、わたしには未体験ゾーンな難易度である.

CPUAとCPUBの通信.

通信路: UART、全2重、2Mbps、フロー制御なし、差動バッファかまして差動伝送

CPUAが出す情報は2種類
 1)100mSec毎に5kBYTEの定期便(binary)
 2)不定期、不定量で低速度なstatus返信(string)

CPUBが出す情報は1種類
 3)不定期、不定量で低速度なcommand(string)

3は簡単なのでさておく.

問題は1と2である.
1はDMAが必須.
2はDMAである必要はないが、1に相乗りさせるのでDMA.
定期便毎の相乗り枠は128BYTEであるが、満杯になるかもしれない.
満杯なら次の便に乗せる.
乗せ方はCR末尾で区切って乗せる.

切って乗せてバラしたりするのめんどくさい.
リングバッファに仮putして送信する直前にgetしてとかなんとかやってる.

実を云うと、こんな風な6:1のタコ足通信に加えてPCとの接続が2系統ある.HWリソース全部使ってる未体験ゾーン.
 CPUA-CPUB  DMA
 CPUC-CPUB  DMA
 CPUD-CPUB  DMA
 CPUE-CPUB  DMA
 CPUF-CPUB  DMA
 CPUG-CPUB  DMA
    CPUB-(UART)-PC  割込み
    CPUB-(USB)-PC

かしこ

23 件のコメント:

  1. LS244バッファじゃだめみたいですね 毒者

    返信削除
    返信
    1. RS485バッファを流用中
      波形綺麗です

      削除
  2. murasaki
    バッファ操作はそれだけでオライリーの本が書けそうな一大分野ですね。現状かなり大変そうですが、ノイズ対策や伝文解析が加わったら更にカオスになりそうです。

    返信削除
    返信
    1. 現在なぜか3が動かなくて困ってる

      削除
    2. あるあるですねー💦
      一番問題なさそうなものが何故か動かない。
      しかも調べると原因がまあまあ込み入っていたりするという・・。
      ちなみに動かないのは送信側と受信側のどちらでしょうか。とか聞いてみたくなる今日この頃。

      削除
    3. なぜか受信callbackに飛んでこないという病気
      ったく根性みせろよSTM32

      削除
    4. murasaki
      いろいろ要因が考えられるやつですねー。
      受信レジスタに値が入っていて(受信できていて)割り込まない場合は、割り込みまわりですかね。
      割り込みが他のチャンネルと共用になっているとか、優先度が低いと他の優先度の高い割り込みを処理した後なんかのレジスタの値を設定してあげないと割り込みし直さないとか、CPUのクセみたいな奴があるかもですねー。

      削除
    5. murasaki
      いろいろ要因が考えられるやつですねー。
      受信レジスタに値が入っていて(受信できていて)割り込まない場合は、割り込みまわりですかね。
      割り込みが他のチャンネルと共用になっているとか、優先度が低いと他の優先度の高い割り込みを処理した後なんかのレジスタの値を設定してあげないと割り込みし直さないとか、CPUのクセみたいな奴があるかもですねー。

      削除
    6. 癖かもしんない

      TXは3BYTE送信
      RXは3BYTE受信 →受信後callback正常

      TXは1BYTE送信
      RXは1BYTE受信 →受信後callbackかからない

      ↑こんなかんじがする

      なおUSARTのUART使いしていて生じるトラブル

      UARTのUART使いでこうゆうトラブルは出ていない

      削除
    7. たぶん原因わかった
      ・CPUAが起動する前からCPUBがコマンドを送っていると
      ・CPUAのUARTが起動する前にHW bufferがoverflowしていて
      ・CPUAのUARTにRX指令しても動かない

      ↑前にもみたトラブル

      逐次フラグクリアすれば治る
      __HAL_UART_CLEAR_OREFLAG(huart);
      __HAL_UART_FLUSH_DRREGISTER(huart);

      削除
    8. murasaki
      早い。もう解決ですか。
      初期化前の受信が絡んでいるやつですね〜。

      削除
    9. UARTを使う理由は、撃ちっ放しでいいからなのですが、
      そのせいで不調になるのはご勘弁を >UART

      削除
  3. 最近良く使っていますがCopilotに対策方法を聞いたらどんな回答があるでしょうか。

    返信削除
    返信
    1. copilot:
      「手かざしは試しましたか? 手かざしで治るケースが近年多く報告されています」

      削除
    2. じゃぁ、最近覚醒したって言ってる「スーツ氏」に、聞いてみれば?

      いやぁ、彼って、実は「前からおかしかった」と思ってるんですが。
      (時々、旅行チャンネルとか見てた。)

      なんか、最近、
      ・逆噴射しながら飛ぶ彗星(3I/ATLAS は、「進行方向に、塵を噴射しながら飛んでる」らしい。まぁ、これを、
      ・普通の自然現象です( ー`дー´)キリッ
      と、「言い切っちゃう」天文学者たちもどーかしてると思いますが。
      もはや、明日から「西から太陽が昇ってきて」も、
      ・自然現象です
      と、真顔で言われそうだ・・・

      もう、「何が起きても驚かない」が吉

      削除
    3. スーツ君はわたしも知ってます、
      超覚醒しちゃってねぇ、
      出口王仁三郎が憑依したレベルで覚醒しちゃった

      覚醒ポストのあとで「お騒がせしました」ポストが
      出ましたけど
      あれってご本人なんでしょうか?

      削除
    4. NASAはまだお休み中なんですかね?

      3Iは火星軌道内にはもう入っているので
      そろそろなにかメッセージとか、
      急激に光度を増すとか、
      急制動とか、
      なんかやってもらいたいです

      削除
    5. しかし、「スーツ氏」なんて、
      ・最も遠いところと思われていた「オカルト系チャンネル」
      から、雨後のタケノコのように動画が出てるのがウケるな(笑)
      ※コレも、「3I/ATLAS」の影響だったりして。
      もはや、何が起きても不思議ではない。
      ・彗星は「逆噴射」してるし
      ・日本にも「女性首相」誕生しちゃったし(笑)
      明日はどっちだ!?

      削除
    6. 彼は本格覚醒しました
      異星人からの電波を受信したスーツ君は目覚めし者
      スピ系でもスーツ君が取り上げられています
      ナイスです

      削除
    7. 羨ましいです。私も覚醒したい・・・

      削除
  4. >CPUAが出す情報は2種類
    > 1)100mSec毎に5kBYTEの定期便(binary)
    > 2)不定期、不定量で低速度なstatus返信(string)
    あ、これは、
    ・CD の、「サブコード」の考え方
    ですね・・・
    ※たしか、この概念って「DAT」とかにもあったハズ。
    私は一応「RED BOOK」(CD の基本仕様書。原文は英語。コレを分担して日本語訳するという学習会に参加してたことがある。)は、一応全文一通りは読んでます。DAT の仕様書(GREEN BOOK? だっけ。名前忘れた)は、ちょっとだけ読んだことがあります。

    >切って乗せてバラしたりするのめんどくさい
    今思えば、当時の貧弱なハードで、
    ・よく色んなことやってたな~
    と思います。
    CD のサブコードには、
    ・タイムコード
    ・各種フラグ(コピー可不可、とか)
    あと、「CD カラオケの歌詞」とかが載ってるモノもあった。

    よくやってたな~、と思います。

    返信削除
    返信
    1. 乗せますサブコード

      DATにもサブコード乗ってます~

      CD、DATのコピー禁止コードは「禁止ですぅ」ゆうてる
      だけなのでカワイイもんでありました

      削除
    2. CD開発当時のgate規模ってやっと1kゲートぐらいで、
      エラー訂正に3kぐらい使うのがクレイジーな数だったとか

      DATはもっと後だったので訂正能力高めてました

      CDよく生き残ってるな
      あんな古いもの

      削除