12315|4

36

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

富士通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
 ******************************************************************************/

最新回复

这个坛子也有人玩RT-Thread操作系统  详情 回复 发表于 2012-7-20 09:11
点赞 关注
 

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 

居然会出现这么大的毛病

楼主用别的mb9bf506r.h,试试行么?
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个坛子也有人玩RT-Thread操作系统
 
 
 

回复

36

帖子

0

TA的资源

一粒金砂(高级)

4
 
RT-Thread的老大也在坛子里。
 
 
 

回复

36

帖子

0

TA的资源

一粒金砂(高级)

5
 
RDR与TDR是两个寄存器,但实际是共用一个地址。
当读操作时,是读的RDR,
当写操作时,是写的TDR。

当你写过TDR后,想去读一下TDR,而实现上是读的RDR的值。
RDR的值可能是读保持也可能是清清除,所以你看的是什么值是不确定的。
这就是仿真时为什么总出溢出错误的原因了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表