こんにちはtaniと申します。RX231マイコンでCAN通信を行っています。
CANalyzerからCANデータを送信しているのですがACKエラーとなってしまいます。
そこでCANalyzerのSelf ACK機能を用いたところ受信はできるようになりました。
ACKが出ていない原因として何が考えられるでしょうか。(受信はできているのでハードの問題ではないと思うのですが…)
ACKは最後の方に受信側がドミナント(L)を出すものなので、先頭から0/1を追いかけていくと(本来は)判りますが、この解像度ではちょっと判りません。(CANアナライザのメッセージでは、119ビット目がACKスロット:送信側はレセシブ(H), 受信側がドミナント(L)となるポイントだと思われますので、先頭から119ビット目の波形を見れば判るはず)(119→拡張IDでデータ8バイト、ビットスタッフィングなし…
CANバス内に他にノードはいますか?
誰もACKを返してないのではないでしょうか。
誰もACKを返さないとACKエラーになります。Self ACKは自分で出したCAN信号に自分でACKを返すので
ACKエラーにならなくなります。
Noobさん、返信ありがとうございます。
CANalyzerから送信しているので、RXマイコンが受信すればACKを返すものと思っていたのですが誤っているでしょうか。
合ってます。
ただリッスンオンリモードになってると受信はできてもACKを返しません。
この設定は大丈夫でしょうか
リッスンオンリモードではないようです。(CTMS=0)
連続送信ではなく、1shot送信でもACKエラーになるでしょうか。
あとはRXマイコン側で何かエラーフラグが立ってないかを調べるくらいでしょうか。
ごめんなさい。分かりません。
1shot送信でもCANalyzer側でエラーは発生します。
マイコン側のエラーフラグですが複数のエラーが立ったり消えたりします。
B0ERR、B1ERR、FERR,SERR、ALF,BLF,OVLF,BOFFが立ったり消えたりします