找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 997|回复: 0
打印 上一主题 下一主题
收起左侧

GP22单片机寄存器设置例子

[复制链接]
跳转到指定楼层
楼主
ID:1091405 发表于 2023-8-16 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
硬件设计,见参考手册。
软件设计:

配置寄存器0的设置: 0x00C53855
  
D31
  
D30
D29
D28
D27
D26
D25
D24
0
0
不使用FIRE脉冲,个数为0
不使用FIRE 分频
0x00


  
D23
  
D22
D21
D20
D19
D18
D17
D16
0           1
0
0           1
0
1
校准周期为16个
不分频就用4MHz
晶振一直开启
2个测温
512us
0x25

  
D15
  
D14
D13
D12
D11
D10
D9
D8
0
0
1
1
1
0
0
0
2热身
选32K
开启校准
运行校准
范围2
上升
上升
上升沿
0x38

  
D7
  
D6
D5
D4
D3
D2
D1
D0
































0x55 随便写一个数字

配置寄存器1的设置   0x21c13f55
  
D31
  
D30


D29
D28
D27
D26
D25
D24


2
1


只测一个脉冲,STOP1
只有START 故只能设为1
0x21


  
D23
  
D22
D21
D20
D19
D18
D17
D16
1
1
0
1
快初始


STOP2的脉冲数,不捕获
STOP1的脉冲数,捕1个
0xc1

  
D15
  
D14
D13
D12
D11
D10
D9
D8
0
0
1
1
1
1
1
1
功耗
外部
输出4KHz 不用EnStart功能
输出32K,不用FIRE_IN功能
0x3F  我们可以测一下DIS引脚和FIN脚 是不是有4K和32K信号来证明设置是否正确
0x07 则我们设置EN_START功能。
  
D7
  
D6
D5
D4
D3
D2
D1
D0
































0x55 随便写一个数字


配置寄存器2的设置  0xE0002055
  
D31
  
D30
D29
D28
D27
D26
D25
D24
1
1
1
0
0
0
0
0
只开启ALU中断
上升
上升


0xE0    改成E0试一下看中断到底产不产生   延时改成2us

  
D23
  
D22
D21
D20
D19
D18
D17
D16
0
0
0
0
0
0
0
0
















0x00


  
D15
  
D14
D13
D12
D11
D10
D9
D8
0
1
0
0
0
0
0
0






这个是5位小数部分
0x20   改成2us后才计算这个STOP1  5位小数部分不管它了

  
D7
  
D6
D5
D4
D3
D2
D1
D0
































0x55 随便写一个数字

配置寄存器3的设置   0x90000055         B80000055 这个就是4096us
  
D31
  
D30
D29
D28
D27
D26
D25
D24
1
0
0
1
0
0
0
0
自动
第1波关
FFFFFF
1024us






0xb8

  
D23
  
D22
D21
D20
D19
D18
D17
D16
0
0
0
0
0
0
0
0
















0x00

  
D15
  
D14
D13
D12
D11
D10
D9
D8
0
0
0
0
0
0
0
0






STOP1第2个波整数部分14位   小数部分5位
0x00

  
D7
  
D6
D5
D4
D3
D2
D1
D0
















0
1
0
1








0x55 随便写一个数字


配置寄存器4的设置  0x20000055
  
D31
  
D30
D29
D28
D27
D26
D25
D24
2








默认值








0x20

  
D23
  
D22
D21
D20
D19
D18
D17
D16
































00


  
D15
  
D14
D13
D12
D11
D10
D9
D8
































00

  
D7
  
D6
D5
D4
D3
D2
D1
D0
































0x55
配置寄存器5的设置  0x18000055
  
D31
  
D30
D29
D28
D27
D26
D25
D24
0
0
0
1
1
0
0
0






开噪声
关噪声
不用声环法
0x18

  
D23
  
D22
D21
D20
D19
D18
D17
D16
0
0
0
0
0
0
0
0
















00


  
D15
  
D14
D13
D12
D11
D10
D9
D8
0
0
0
0
0
0
0
0
















00

  
D7
  
D6
D5
D4
D3
D2
D1
D0
































0x55

配置寄存器6的设置    0x40cf0055
  
D31
  
D30
D29
D28
D27
D26
D25
D24
0
1
0
0
0
0
0
0
关模拟
内部












0x40

  
D23
  
D22
D21
D20
D19
D18
D17
D16
1
1
0
0
0
1
0
1


充电时间不用它
一直开
测温度有关
0xc5


  
D15
  
D14
D13
D12
D11
D10
D9
D8
0
0
0
0
0
0
0
0
50Hz


4倍精
2倍精
顺序






00

  
D7
  
D6
D5
D4
D3
D2
D1
D0
















0
1
0
1
0
1
0
1
0x55
编写一个程序,写配置寄存器,再读配置寄存器
写配置寄存器,先发一个0x80 后面跟着一个32位的先高字节后低字节写入。
读56位ID呢 我们先发一个0xb7  然后就是连续写7个0进去,然后将读到的缓冲区读子网来看一下。注意到写b7之后,我们一个一个的写00,然后读到SPI的值。
先发一个0x50 复位芯片,延时1ms后,发一个Init命令,即0x70。然后发一个0x01命令等这个START信号过来。然后就是在等中断程序了,在中断程序中,我们要读取这个测量的距离时间差值 通过发一个0xB0给这个读命令。读32位的值。

由于这个芯片的频率可以达到20M,故我们用10M的速度是没什么问题的。
此时读32位只需要3.2us  加上前导。故总的时间在4us左右,中断程序允许这个。
或者我们用DMA来读当然也是可以的。但是DMA的话就要一个缓冲区buffer5个字节。取后面的4个字节为结果值。这样可以省去5个时钟。那这个SPI该用那个脚呢?
用SPI0还是空着的,可以用。经测试SPI通讯正常,已经可以将EN_START和FNT上测到4K和32768Hz的信号,证明设置成功。后面正式开始测量了。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表