Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
keni_4440091
Level 7
Level 7
500 replies posted 100 solutions authored 50 solutions authored

Hi

I want to translate KBA229088, please confirm to my work.

Regards,

Nino

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi, Nino-san

Confirm to work this KBA.

Thanks,

Jenna

Jenna Jo
0 Likes

PDL 2.1.0adc.cにある間違えたレジスタアクセスSCIS01およびSCIS23 – KBA229088

バージョン 1

ChaitanyaV_61 2019/12/02 22:44 に作成。ChaitanyaV_61 2019/12/02 22:44 に変更。

Author: TakashiM_61          Version: **

質問: SCIS01およびSCIS23レジスタは16ビット幅を持っているにも関わらず、adc.c8ビットでアクセスされるのは何故ですか?

回答:

PDL 2.1.0に含まれるADCデバイスドライバーでは、スキャン変換入力選択レジスタSCIS01およびSCIS23へのアクセスはadc.cファイルに実装されています。

// スキャン変換入力選択レジスタの設定

pstcAdc->SCIS01 = (uint8_t)(0x0000FFFFul & pstcConfig->pstcScanInit->u32ScanCannelSelect.u32AD_CHn);

pstcAdc->SCIS23 = (uint8_t)((0xFFFF0000ul & pstcConfig->pstcScanInit->u32ScanCannelSelect.u32AD_CHn) >> 16u);

上記コードの抜粋は正しくありません。

FM0+ファミリペリフェラルマニュアルアナログマクロパートによると、これらのレジスタは16ビット幅を持っています。SCIS01およびSCIS23レジスタが、上記コードの抜粋で記述されているように8ビットキャスト“(uint8_t)”でアクセスされる場合、最上位8ビット(MSBs)は無視されます。

これは、SCIS01レジスタのチャネル8から15まで、およびSCIS23レジスタのチャネル24から31までが上記実装で選択されないことを意味しています。

pastedImage_0.png

従って、下記はPDL 2.1.0adc.cの正しいコードになります:

// スキャン変換入力選択レジスタ設定

pstcAdc->SCIS01 = (uint16_t)(0x0000FFFFul & pstcConfig->pstcScanInit->u32ScanCannelSelect.u32AD_CHn);

pstcAdc->SCIS23 = (uint16_t)((0xFFFF0000ul & pstcConfig->pstcScanInit->u32ScanCannelSelect.u32AD_CHn) >> 16u);

40 閲覧 カテゴリ: Other  タグ: adc, pdl 2.1.0, fm series, adc.c

0 Likes