いくつかのカスタムオーディオ処理アプリケーションにRelatekオーディオコーデックALC5621を使用しています。コーデックとsoc(cc1110)間の通信を制御するためにi2cビットを使用します。イコライザの部分を理解しているうちに、私は問題に遭遇しました。 ---次のように記述されています---> 3.13形式で---> "2"の補数のバイナリ入力を受け入れる16ビットレジスタ(範囲は - 4〜3.99) "レジスタサイズ16ビット(15,0)、どうすればこのレジスタにデータを与えることができますか?-4、-1など?3.13形式の2の補数です(範囲は-4〜3.99です)。それはどういう意味ですか?
1
A
答えて
1
3.13 "Q"数値形式と呼ばれるバイナリ固定小数点算術表記で表される形式。
を参照してください。Fixed-point arithmetic
3.13は、3ビットの整数と16ビットの2の補数の整数(Wikipediaを引用)として格納された13の小数ビットを持つ数値を表します。
Q3.13で与えられた値の固定小数点値を "物理的"浮動小数点値に変換するには、整数値を2^13で割ることで行います。
16ビットの整数は、shortという変数で表すことができます。short q;
「物理的」(つまり電圧)値は、doubleという変数で表すことができます。double v; Vへ
short q; //Q3.13 integer format.
double v; //"physical" value (assuming voltage).
変換Q:
v = (double)q/(double)(1<<13);
がQにVの変換:
q = (short)floor(v*(double)(1<<13) + 0.5); //Add 0.5 for rounding - round(x) = floor(x+0.5)
例:
q = -32768; //Minimum short range
//v = -32768/8192 = -4.0
q = 32767; //Maximum short range
//v = 32767/8192 = 3.9998779
v = -4.0;
//q = floor(-4.0*8192.0 + 0.5) = -32768
v = -1.0;
//q = floor(-1.0*8192.0 + 0.5) = -8192
+0
本当に助けてくれました。ありがとう@ロテム、本当に素晴らしいです –
関連する問題
- 1. 2 .. 1の範囲はどういう意味ですか? (Ruby koans about_arrays.rb)
- 2. 形式言語:R-trivialはどういう意味ですか?
- 3. Python: "foo()はiの範囲(bar)"とはどういう意味ですか?
- 4. Python形式の文字列では、!rはどういう意味ですか?
- 5. それはどういう意味ですか - SSLでのログイン
- 6. AndroidでJsoup userAgent - それはどういう意味ですか?
- 7. "javascript://"とはどういう意味ですか?そのコードには意味:
- 8. kafkaブローカーの状態4はどういう意味ですか
- 9. xcode printf 0x0000000000000000、それはどういう意味ですか?それはヌルを意味しますか?
- 10. XoffLimit、XonLimit - それはどういう意味ですか?
- 11. MVC4 - ContextDependentView - それはどういう意味ですか?
- 12. SQL Serverリターンコード-6、それはどういう意味ですか?
- 13. java.lang.IllegalStateExceptionそれはどういう意味ですか?
- 14. boost.randomバグ警告 - それはどういう意味ですか?
- 15. Appription Active Directoryサポート、それはどういう意味ですか?
- 16. AudioRecord: "Overrun user"ログ - それはどういう意味ですか?
- 17. セッションnull、それはどういう意味ですか?
- 18. PHP、$ this - > {$ var} - それはどういう意味ですか?
- 19. アセンブリNASMセグメンテーションフォールト、それはどういう意味ですか?
- 20. Apache Camel: "direct:start"エンドポイント - それはどういう意味ですか?
- 21. [NSBundle bundleForClass:[self class]]]それはどういう意味ですか?
- 22. javax.wsdl.WSDLException:WSDLException:faultCode = PARSER_ERRORそれはどういう意味ですか?
- 23. errno!= EINTR:それはどういう意味ですか?
- 24. "<!DOCTYPE html>"それはどういう意味ですか?
- 25. IllegalStateException:それはどういう意味ですか?
- 26. JavaCv/OpenCvエラー:それはどういう意味ですか?
- 27. '0の軸0のインデックス0は範囲外です'はどういう意味ですか?
- 28. dockerfileの複数行CMDそれはどういう意味ですか?
- 29. "newing" JavaScriptの関数 - それはどういう意味ですか?
- 30. linuxの意味はどういう意味ですか?
私はあなたの問題を理解していません。もっと分かりやすい例でもっと正確に表現できますか? – ckruczek
-4.3、+ 3.99、-2、+ 1.99のような値をコーデックの16ビットレジスタに適用する必要があります。これは3.13形式の2の補数で値を受け入れますが、どうすれば適用できますか? –