こんにちは、廣田です。 miyamae wrote: > > 宮前です > > シリアルROM(I2C)の256Kbit(24LC256)を全部読み出すの > に、15秒ぐらいか > かっていて > 速度に少しがっかりしてます。 (シーケンシャルリード) > deleyはほとんど全て外したので、今のロジック(構造)では劇的には速く > ならない気がします。 > > 条件 > CPU:3048F 16Mhz > 言語:AKI−3048用C(I2CのアクセスもCで) > モニター配下で、割り込みは使用していません。 > プログラムは増設SRAM、スタックは内蔵RAM。 > > 15秒に対して、コメント頂きたいです。 現状のSCLの波形をオシロなどで観測していますか? 大抵のIICインターフェイス を使用したデバイスは1MHzくらいまでは動作します。 1MHzで動けばシーケンシャルリードで0.6秒は掛からない。 シーケンシャルリードなら4byte/65クロックで読み込めるはず。(概算で) IICタイミングクロックを1MHzとして(5V駆動時) 256kbit= 32,768byte 32,763/4= 8192リードリードアクセス 8192×65μs = 0.53s ただし、IICの最大クロック(SCL)周波数は400kHzとどこかで読んだ気がしますので、 規格内に入れるなら 1.4s位になるかと。 #ソフトでSCLのタイミングなどを作ってシリアル-パラレル変換するとなると、 #1SCL=10μsくらいならなんとかなりそうな気がしますが。 #そうすると6秒を切るくらいまでスピードアップできそう。 #ただのIO-メモリ転送制御ですから、Cで書くメリットが少ない気がします。 #この部分だけアセンブリ言語で記述してみるとか。 #アセンブラで攻めてみて、SCL=400kHz,全読みとり1.4秒を目標。(きついかな?) -- /****************************************************************************** Name: 廣田 正孝 "Hirota Masataka" E-mail address: mhirota@xxxxxxxxxxxxx ******************************************************************************/