ラベル STMicro の投稿を表示しています。 すべての投稿を表示
ラベル STMicro の投稿を表示しています。 すべての投稿を表示

2013年9月16日月曜日

STM32F1でTIMのパラメータ

STM32F1のTIMのパラメータ
この関数は引数1で与えた周波数になるように引数2と引数3のポインタにパラメーターを書き込む

// 0:成功 
// 1:システムクロックで割り切れない周波数 
// 2:プリスケーラの設定中に丸め誤差が発生した 
uint8_t TIM_GetFreqencyPrameter(uint32_t Freqency, uint16_t *pPeriod, uint16_t *pPrescaler) {
    const uint32_t cSysFreq = 72 * 1000 * 1000;
    uint32_t per, pre;
    
    if (cSysFreq % Freqency) { return(1); }
    
    per = cSysFreq / Freqency;
    pre = 1;
    
    while (per > 0xFFFF) { per /= 10; pre *= 10; }
    
    if ((cSysFreq / per / pre) != Freqency) { return(2); }
    
    *pPeriod    = per - 1;
    *pPrescaler = pre - 1;
    
    return(0);

}

なおシステム周波数はcSysFreq変数に設定され、この例では72MHzとなっている
計算上完璧な周波数以外は1or2が返される
正常な場合は0が返され、ポインタに値が設定される


とりあえず軽く動作確認はしていますが、使うときは自己責任でどーぞ
例えば7Hzや11Hzは作成できません
11Hzは整数で割り切ることができないので1が帰ります
7Hzは整数で割り切ることができますが、0xFFFFより大きな数字になってしまうため、丸め誤差エラーが発生し2が帰ります

ラッパー関数を作ればサクッとタイマの初期化もできますが、信頼性は低いのであまり多様しないように

2013年6月8日土曜日

STM32F1でフラッシュサイズを獲得

STM32F10xでは特定のレジスタにデバイスの情報が書き込まれています
これは予め工場で書き込まれ、ユーザーが変更することはできません

Flashサイズは0x1FFFF7E0にuint16_tで保存されます


値はキロバイト単位で保存されています

RAMサイズも同じように読めるはずですが、ぼくの環境ではなぜか動いていません

2013年6月1日土曜日

STM32F4DISCOVERYでST-Link

STM32F4DISCOVERYをST-Linkとして使う方法です
とりあえずFlashの読み込みだけです

使用したのはSTM32F4でぃすかばーです
コレ → http://akizukidenshi.com/catalog/g/gM-05313/

ほかにSTM32F3等でもできます

ターゲットとして STBee を使用しました
STBeeのCN2(JTAGコネクタ)も必要に応じて実装しておいてください


まずは必要なソフトウェアの準備
ST-Link V2のページから必要なモノを落としてきます

003がドライバ 004がユーティリティです
僕は003を入れてから004を入れましたが、
ユーティリティにドライバも含まれているようです
分けて配布されてるのでとりあえず両方入れましたが

ドライバとユーティリティが入ったらPC側の準備はできました

次はボード側です

以下F4でぃすかばー前提で説明します

まずF4側のジャンパピン2個を外します
USB-miniB側にあるジャンパピンで
片側に白の塗りつぶしの枠でDISCOVER
反対側に白枠でST-LINK
と書いてあるヤツです

コレをジャンパすることによりオンボードST-LinkはSTM32F4と接続されます
なのでこれを外すとST-Link単体として使えます
(STM32F4は給電されっぱなしです

次にSTBeeとでぃすかばーを接続します

でぃすかばーのCN2(6pin)がSWDに使うコネクタです
CN2の白丸側が1pinで
使用するのは2/3/4の3本です

ST-Link側の2pin(SWCLK)をSTBeeの9pin(TCK)
ST-Link側の4pin(SWDIO)をSTBeeの7pin(TMS)
ST-Link側の3pin(GND)をSTBeeの適当なpinに接続(今回は8pin)
GNDはSTBeeのGNDに接続されればいいので、JTAGコネクタの偶数ピンに接続します
ただし2ピンはVDDなので接続してはいけません

この状態でST-Linkと接続されたので
STBeeの電源を投入し、ST-LinkもPCに接続します

ST-Link Utilityを起動し、Connect to the target. (フロッピーアイコンの右のコンセント)をクリックします
正常に接続されれば少しのタイムラグの後にFlashの中身が表示されます
接続できない場合はST-Linkとターゲットの電源を抜いてから接続を確認してください

アドレスは0x08000000固定で 読み込むサイズは可変のようです
DFUを見たければ0x08000000から0x3000Byteです

これでST-Linkを使った読み出しができるようになりました
DFUが破壊されたSTBeeの復旧とかもできそうです

2012年10月17日水曜日

LIS331HHとL3G4200Dのアドレスマップ

STMicro製加速度センサのLIS331HHと
STMicro製角速度センサのL3G4200Dのアドレスマップです

両方共スイッチサイエンスで買うことができます

範囲が広いので様々な用途に使えそうなセンサ


アドレスマップ メモっときます