Announcements
IMPORTANT: Cypress Developer Community is transitioning on October 20th. To learn more and be prepared for this change, check out our latest announcement.
cancel
Showing results for 
Search instead for 
Did you mean: 

Knowledge Base Articles

PDL 2.1.0での列挙型「en_mfs_mode」の誤った定義 - KBA229085 - Community Translated (JA)

SivaK_96
Employee

PDL 2.1.0での列挙型「en_mfs_mode」の誤った定義 - KBA229085 - Community Translated (JA)

Community Translated by  NoTa_4591161       Version: *A

Translation - English: Incorrect Definition of Enumerator “en_mfs_mode” in PDL 2.1.0 - KBA229085

PDL 2.1.0の列挙型「en_mfs_mode」は次のように定義されています。

<PDLインストールディレクトリ>\drivers\mfs\mfs.h

/// MFSモード

typedef enum en_mfs_mode

{

    MfsInitMode = 0u/// <MFS初期モード

    MfsUartMode = 1u/// <MFS UARTモード

    MfsCsioMode = 2u/// <MFS CSIOモード

    MfsI2cMode = 3u/// <MFS I2Cモード

    MfsLinMode = 4u/// <MFS LINモード

} en_mfs_mode_t;

ただし、FM0 +ファミリのペリフェラルマニュアルコミュニケーションマクロパーツ(文書番号002-05024改訂版* C)によると、I2Cモードは「4」、LINモードは「3」です。

1.png 

したがって、PDL 2.1.0の列挙型「en_mfs_mode」の定義は正しくありません。列挙型「en_mfs_mode」の正しい定義は次のとおりです。

/// MFSモード

typedef enum en_mfs_mode

{

    MfsInitMode = 0u/// <MFS初期モード

    MfsUartMode = 1u/// <MFS UARTモード

    MfsCsioMode = 2u/// <MFS CSIOモード

    MfsLinMode = 3u/// <MFS LINモード

    MfsI2cMode = 4u/// <MFS I2Cモード

} en_mfs_mode_t;

さらに、MFSドライバーのインターフェイスモードは、列挙型「en_mfs_mode」を使用する代わりに、数値でハードコードされています。曖昧さを回避するために、MFSドライバーでは列挙型「en_mfs_mode」の定義を使用する必要があります。

次のPDL 2.1.0 mfs.cコードスニペットでは、赤の行はハードコーディングを示し、青の行は列挙型「en_mfs_mode」が使用されていることを示しています。

--- mfs.c.org 2017-12-23 01:29:26.000000000 +0900

+++ mfs.c       2019-11-25 15:07:50.429769700 +0900

@@ -1025,10 +1025,10 @@

switch (pstcConfig->enMode)

{

case UartNormal:

-     stcSMR.MD = 0u;   /* ノーマルモード */

+     stcSMR.MD = MfsInitMode;   /* ノーマルモード */

      break;

case UartMulti:

-     stcSMR.MD = 1u;    /* マルチプロセッサモード */

+     stcSMR.MD = MfsUartMode;   /* マルチプロセッサモード */

      break;

default:

      return (ErrorInvalidParameter);

@@ -2011,7 +2011,7 @@

pstcMfsInternData->enMode = MfsCsioMode;

/* CSIOモードを設定 */

-    stcSMR.MD = 2u;

+    stcSMR.MD = MfsCsioMode;

/* Sマスター/スレーブモードを設定 */

switch(pstcConfig->enMsMode)

@@ -3372,7 +3372,7 @@

{

case I2cMaster:

case I2cSlave:

-     stcSMR.MD = 4u;

+     stcSMR.MD = MfsLinMode;

break;

default:

return (ErrorInvalidParameter);

@@ -4424,7 +4424,7 @@

pstcLin->SCR_f.UPCL = TRUE;

/* LINモードをHWおよびプリセット変数に設定 */

-     stcSMR.MD = 3u;

+     stcSMR.MD = MfsI2cMode;

/* シリアル出力を有効にする */

stcSMR.SOE = TRUE;

0 Likes
Version history
Revision #:
1 of 1
Last update:
‎Jul 01, 2020 09:15 PM
Updated by:
 
Contributors