【美信开发板系列试用体验】+max14001通讯形式和数据转换

  • 我爱下载
  • LV5工程师
  • |      2018-01-23 11:07:48
  • 浏览量 1846
  • 回复:1
max14001的通讯采用spi,数据采用16位格式,是多个数据的组合而成的,重要的是他是LSB的,非常特别。 下面看一下基本时序图 这是一个写时序,读时序和这个格式相同,唯一的差别是W的位置换成R W = 1; R = 0; 由于是LSB,所以还需要满需Spi的MSB发送格式的转换,这里给出一个转换函数: 主机发送数据形成函数 uint16_t data_exchange(uint16_t data,uint8_t addr, bool wr_flag) { int i; uint16_t ret = 0; uint16_t tdata = (data & 0x1FF) | (wr_flag << 10) | ((addr & 0x1F) << 11); for(i=0;i<16;++i) { ret >>= 1; if(tdata & 0x8000) ret |= 0x8000; tdata <<= 1; } return ret; } 主机接收数据解析函数 uint16_t data_rexchange(uint16_t data) { int i; uint16_t ret = 0; for(i=0;i<16;++i) { ret >>= 1; if(data & 0x8000) ret |= 0x8000; data <<= 1; } return ret & 0x3FF; }
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
我爱下载 2018-01-25
这种是针对spi只有msb方式发送的,现在的spi都比较灵活了,可选lsb,就方便多了,不用做这么多工作
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子