STM32 ライブラリ xxx_StructInit() は必ず行う

STM32のライブラリでSPIを使ったが、どうも動作が不安定なので悩んでいた。

初期化は

SPI_InitTypeDef SPI_InitStructure;

// 2線・全二重モード
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

// スレーブモード
SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
// 8bitモード
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
// クロック極性: 通常時L
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
// クロックフェーズ: 1エッジ
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
// SPI_NSS_Hard: NSSピンはマスターからのCSとして使用しそれにより自動イネーブル
// SPI_NSS_Soft: 手動(SPI_CR1->SSIビットをNSSとして使用)
SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;
// MSBから送受信
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
// CRCは使用しないがデフォルトの多項式 7 を設定
SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI1, &SPI_InitStructure);

こんなコード。SPI_InitTypeDef 構造体メンバ中、 SPI_BaudRatePrescaler のみ、なにも設定していないが、スレーブモードなので、設定しなくていいと思っていた。

でも、SPI_Init() のソースを見ると、構造体メンバの値を単純にorしたものを、SPI_CR1レジスタに設定していた。

tmpreg |= (uint16_t)((uint32_t)SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_Mode |
SPI_InitStruct->SPI_DataSize | SPI_InitStruct->SPI_CPOL |
SPI_InitStruct->SPI_CPHA | SPI_InitStruct->SPI_NSS |
SPI_InitStruct->SPI_BaudRatePrescaler | SPI_InitStruct->SPI_FirstBit);
/* Write to SPIx CR1 */
SPIx->CR1 = tmpreg;

構造体メンバに1つでも未初期化のものがあると、めちゃくちゃな値がCR1レジスタ全体に設定されてしまうのだった…それで不安定だったのかorz。

debug時はassert_param()でパラメータチェックが入るからいいのだが、ズボラにズボラを重ねていきなりreleaseで作っていると当然ノーチェック。

構造体メンバはまず

SPI_StructInit(&SPI_InitStructure);

しておけば、必要な構造体メンバの初期化がされるので、必ず行うべきなのだった…。


スノースポーツ用ヘルメット(GIRO)とヘッドホン

数年前からスキーをしていますが、今年から、万一に備えてヘルメットをすることにした。

お店でいくつか試着してみて、GIROのNINE.10にした。NINE.10は、「ひさし」部分にエアダクトがあって、ゴーグルが曇りにくいように考慮されている点が気に入った。

それと手持ちのゴーグルにフィットするかという点も考慮した。これはとても重要なので、ヘルメットはお店で、自分の頭と、それと使用予定のゴーグルとも合わせてみた上で買ったほうがいいと思う。これを考慮せずに買って、メットとゴーグルとにスキマができて、おデコに風がモロ当たりで寒い思いをする人もいます。

GIROのヘルメットは TuneUpsシステムと称して、イヤーパッド部分に仕込むヘッドホン(やBluetoothヘッドセット)のオプションが用意されている。
けれどもGIRO純正品は結構なお値段がしますので、なんか適当に、耳掛け式ヘッドホンを加工して仕込めばいいんじゃね?と思い・・




これを買ってきた。パナソニックの耳掛けヘッドホン RP-HZ47
厚さ約9.9mmの薄型設計 を謳っているので、これはイヤーパッドに仕込むのにちょうどいいんじゃね?と思ったわけです。そんで800円くらいで安いし。

ヘルメットのイヤーパッド内に仕込むにあたって、ヘッドホンの耳掛けパーツは不要になるわけだが、RP-HZ47の耳掛けは、それを止めている樹脂パーツを、精密ドライバーかなんかでコジれば簡単にとれる。

で、ヘルメットのイヤーパッド内の丸いスポンジを取り外し(ベルクロで簡単に開けて取り出せるようになっている。GIROの説明書には、スポンジを外すと外界の音が聞こえやすくなります、と書いてあった)、その中にヘッドホンのユニットを入れるだけ。
(イヤーパッド内に仕込むわけなので、ヘッドホンについているスポンジは別にいらないと思うので、それも取り去ってから入れた。素直にはずせるかと思ったら一部接着剤で貼り付いていたがむしり取った。まあどうせ800円だし)

ヒャッハー!イヤーパッドのパンチング部分から微かに覗く青いユニットがシブいぜえ!
コードの処理はダサいけどな!

手持ちのBluetoothレシーバを接続してゲレンデで使ってみたけど、なかなか具合がよろしかったです。
音質はそんなに気にしていません。どうせ、外界の音も聞こえるようにボリューム絞って使うし、なにしろ800円以下だし。

これで、リフトに乗っている退屈な時間も、少しは気が紛れると言うものです。


GALAXY SIIの充電完了通知音がムカツク

ケータイの充電が終わった、なんてのを、音で知らされて、うれしい人なんているのか?
と思ってググると、けっこう「充電完了通知音が欲しい」という人は、いるようなんで、驚きますけど…。なんでそんなこと通知してほしいのかね?生活がケータイオリエンテッドになっていて、充電完了したらおでかけしよう!とか、思うんですかね???理解できないわー。

まあ、ともかく、普通、寝る前には充電すると思いますけど、特にスマホではなおさらそうだろうと思いますけど、
私は、うつらうつらしたとたん、GALAXY SIIに「ピギョ!ピギョ!」という異音充電完了通知音で叩き起こされたことが、何度もある。心底むかついてあやうくひっつかんでぶん投げそうになった。

標準でこれを消す方法ぐらい用意しておけよ!


GALAXY SIIのmicroUSBコネクタ

半年ほどGALAXY SIIを使っているが、microUSBコネクタの接触が、いまいち、悪くなってきた。
microUSBケーブルとの相性(コネクタの接触の相性)がある感じ。

  • 症状その1

    充電器で充電しているだけでも、通信用の接続と誤認し「USBモードを有効にするとBluetoothが無効になります。続行しますか?」というダイアログが出ることがある。

  • 症状その2
    充電中マークが点いているのに、電池容量は減っていくという不条理な状態になることがあり、非常にムカツク。

硬いケーブルだと、ケーブルをさわったりした拍子にコネクタに力が伝わりやすく、接触不良になりやすい。クルマで充電してるような時は常に振動が加わるのでやっぱり接触不良になることが多い。
この接触がイマイチで硬めのケーブルというのが、Samsung純正の付属品おっと試供品というexcuseでしたねのケーブルもそうだったりするのでなおさら腹が立つ。

そこで、何本かmicroUSBケーブルを試した。

いまのところ、ほぼ問題無く使えているのがこのミヤビックスの RCUMBC です。巻き取り式なので柔らかい平ケーブルが使われており、ということはケーブルに加わった力がコネクタに伝わりにくく、つまり振動に強い。クルマで充電している時にも比較的安心。
いまのところ、2本買って、2本とも問題無い。なお、1本目はおそらく2008~2009年ごろに買い、2本目は2012/01に買った。


実は2本目のミヤビックス RCUMBC を買う前に、「巻き取りケーブルで、さらに充電・通信切り替えスイッチが付いてたら、充電器使用時に通信と誤認されることもないだろうから完璧なんじゃね?」と思い、このRIXのケーブルを買ってみたのだが、残念ながらこれは(接触不良を起こした)GALAXY SIIのコネクタとは相性が良くないようで、挿しても充電がはじまらないことすらある接触の悪さだった。残念。



Apple iPhoneのDockコネクタはデカいけど、まだあっちのほうが信頼性がある感じだなあ…。
EUはなんで充電端子仕様をmicroUSBなんかに統一したんだよ!ヽ(`Д´)ノ

◆ ◆ ◆ ◆ ◆

後記。その後、ドコモショップに持っていったら、あっさりGALAXY SII本体を無料で新品交換してくれた(本体とリアパネルのみ。電池はそのまま)。
メモリのバックアップとかそういった作業は一切断ったら、かわりにモバイラーズチェック500円くれた。
接触不良に困ってる人は、保証のあるうちに、時間を作ってドコモショップに持っていった方がいいと思います。
交換後は上記の全く使えなかったRIXのケーブルも使えています。


牛乳石鹸赤ラベル

オッサンになってきたら、空気が乾燥する時期になるとひどく肌荒れするようになってしまったので皮膚科に行ったところ、

「体を洗うときタオルや垢すりなんかでゴシゴシやっちゃだめ。手で洗いなさい。
石鹸も液体ボディーソープはどれも強すぎるきらいがある。
おすすめは『牛乳石鹸の赤箱』

と言われたので、子供のころからゴシゴシやってきた私は軽くショックを受けたのですけど、でも素直に言われたとおり、いままで使っていたボディーソープをやめて牛乳石鹸の赤箱(赤はしっとり系、青はさっぱり系)を購入して手で洗っていますが、なるほど悪くないような気がします。
香りはあまり、良い香り、とも思えないけど。まあ、しょうがない。


  • カテゴリー

  • 最近のコメント

  • Copyright © 1996-2010 xoのブログ. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress