|
富士通FM3官方RT-Thread操作系统移植包中头文件“mb9bf506r.h”有问题?
[复制链接]
最近在富士通提供的FM3官方RT-Thread操作系统上移植SPI接口的网络模块ENC28J60,参照UART驱动编写了SPI驱动,编译正常,但下载到DEMO板上总是发不出数据。接上逻辑分析仪看,果真是一堆乱码。在仿真器中跟踪调试,终于发现是CSIO的发送数据寄存器TDR没有写入数据。但是写入数据指令明明是执行了的。详见下图
图中上半部分是执行 spi->spi_regs->SCR = reg_scr; 从右半部分可一看出,数据 0X3B被写入了CSIO0的SCR寄存器。 但是图中下半部分是执行 spi->spi_regs->TDR = Data; 从右半部分可一看出,数据 0XA5(165)并没有被写入了CSIO0的TDR寄存器。
费尽周折,终于查到头文件“mb9bf506r.h”(这个文件是官方移植包中的头文件)有问题,在头文件中它的CSIO或LIN或I2C接受/发送数据寄存器在该头文件中没有定义。下面是该头文件的摘录,作为对边用红色粗体标出UART的接受/发送数据寄存器的定义。
/****************************************************************************** * MFS03_UART_MODULE ******************************************************************************/ /* MFS03_UART_MODULE register bit fields */ typedef struct stc_mfs03_uart_smr_field { __IO uint8_t SOE : 1; uint8_t RESERVED1 : 1; __IO uint8_t BDS : 1; __IO uint8_t SBL : 1; __IO uint8_t WUCR : 1; __IO uint8_t MD0 : 1; __IO uint8_t MD1 : 1; __IO uint8_t MD2 : 1; } stc_mfs03_uart_smr_field_t;
typedef struct stc_mfs03_uart_scr_field { __IO uint8_t TXE : 1; __IO uint8_t RXE : 1; __IO uint8_t TBIE : 1; __IO uint8_t TIE : 1; __IO uint8_t RIE : 1; uint8_t RESERVED1 : 2; __IO uint8_t UPCL : 1; } stc_mfs03_uart_scr_field_t;
typedef struct stc_mfs03_uart_escr_field { __IO uint8_t L0 : 1; __IO uint8_t L1 : 1; __IO uint8_t L2 : 1; __IO uint8_t P : 1; __IO uint8_t PEN : 1; __IO uint8_t INV : 1; __IO uint8_t ESBL : 1; __IO uint8_t FLWEN : 1; } stc_mfs03_uart_escr_field_t;
typedef struct stc_mfs03_uart_ssr_field { __IO uint8_t TBI : 1; __IO uint8_t TDRE : 1; __IO uint8_t RDRF : 1; __IO uint8_t ORE : 1; __IO uint8_t FRE : 1; __IO uint8_t PE : 1; uint8_t RESERVED1 : 1; __IO uint8_t REC : 1; } stc_mfs03_uart_ssr_field_t;
typedef struct stc_mfs03_uart_rdr_field { uint16_t RESERVED1 : 8; __IO uint16_t AD : 1; } stc_mfs03_uart_rdr_field_t;
typedef struct stc_mfs03_uart_tdr_field { uint16_t RESERVED1 : 8; __IO uint16_t AD : 1; } stc_mfs03_uart_tdr_field_t;
typedef struct stc_mfs03_uart_bgr_field { uint16_t RESERVED1 : 15; __IO uint16_t EXT : 1; } stc_mfs03_uart_bgr_field_t;
typedef struct stc_mfs03_uart_bgr1_field { uint8_t RESERVED1 : 7; __IO uint8_t EXT : 1; } stc_mfs03_uart_bgr1_field_t;
/****************************************************************************** * MFS03_CSIO_MODULE ******************************************************************************/ /* MFS03_CSIO_MODULE register bit fields */ typedef struct stc_mfs03_csio_smr_field { __IO uint8_t SOE : 1; __IO uint8_t SCKE : 1; __IO uint8_t BDS : 1; __IO uint8_t SCINV : 1; __IO uint8_t WUCR : 1; __IO uint8_t MD0 : 1; __IO uint8_t MD1 : 1; __IO uint8_t MD2 : 1; } stc_mfs03_csio_smr_field_t;
typedef struct stc_mfs03_csio_scr_field { __IO uint8_t TXE : 1; __IO uint8_t RXE : 1; __IO uint8_t TBIE : 1; __IO uint8_t TIE : 1; __IO uint8_t RIE : 1; __IO uint8_t SPI : 1; __IO uint8_t MS : 1; __IO uint8_t UPCL : 1; } stc_mfs03_csio_scr_field_t;
typedef struct stc_mfs03_csio_escr_field { __IO uint8_t L0 : 1; __IO uint8_t L1 : 1; __IO uint8_t L2 : 1; __IO uint8_t WT0 : 1; __IO uint8_t WT1 : 1; uint8_t RESERVED1 : 2; __IO uint8_t SOP : 1; } stc_mfs03_csio_escr_field_t;
typedef struct stc_mfs03_csio_ssr_field { __IO uint8_t TBI : 1; __IO uint8_t TDRE : 1; __IO uint8_t RDRF : 1; __IO uint8_t ORE : 1; uint8_t RESERVED1 : 3; __IO uint8_t REC : 1; } stc_mfs03_csio_ssr_field_t;
????????????????????? /****************************************************************************** * MFS03_LIN_MODULE ******************************************************************************/
|
|