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

PDL 2.1.0のadc.cにある間違えたレジスタアクセスSCIS01およびSCIS23 – KBA229088 - Community Translated (JA)

PDL 2.1.0のadc.cにある間違えたレジスタアクセスSCIS01およびSCIS23 – KBA229088 - Community Translated (JA)

ChaitanyaV_61
Employee
Employee
50 questions asked 25 likes received 25 sign-ins

PDL 2.1.0のadc.cにある間違えたレジスタアクセスSCIS01およびSCIS23 – KBA229088 - Community Translated (JA)

Community Translated by keni_4440091          Version: **

Translation - English: Wrong Register Access SCIS01 and SCIS23 in adc.c in PDL 2.1.0 - KBA229088

質問:
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);

0 Likes
68 Views
Contributors