標題: GP22單片機寄存器設置例子 [打印本頁]

    作者: 13386066995    時間: 2023-8-16 11:38
    標題: GP22單片機寄存器設置例子
    硬件設計,見參考手冊。
    軟件設計:

    配置寄存器0的設置: 0x00C53855
      
    D31
      
    D30
    D29
    D28
    D27
    D26
    D25
    D24
    0
    0
    不使用FIRE脈沖,個數(shù)為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 隨便寫一個數(shù)字

    配置寄存器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的脈沖數(shù),不捕獲
    STOP1的脈沖數(shù),捕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 隨便寫一個數(shù)字


    配置寄存器2的設置  0xE0002055
      
    D31
      
    D30
    D29
    D28
    D27
    D26
    D25
    D24
    1
    1
    1
    0
    0
    0
    0
    0
    只開啟ALU中斷
    上升
    上升


    0xE0    改成E0試一下看中斷到底產(chǎn)不產(chǎn)生   延時改成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位小數(shù)部分
    0x20   改成2us后才計算這個STOP1  5位小數(shù)部分不管它了

      
    D7
      
    D6
    D5
    D4
    D3
    D2
    D1
    D0
































    0x55 隨便寫一個數(shù)字

    配置寄存器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個波整數(shù)部分14位   小數(shù)部分5位
    0x00

      
    D7
      
    D6
    D5
    D4
    D3
    D2
    D1
    D0
















    0
    1
    0
    1








    0x55 隨便寫一個數(shù)字


    配置寄存器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






    開噪聲
    關噪聲
    不用聲環(huán)法
    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
    關模擬
    內(nèi)部












    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
    編寫一個程序,寫配置寄存器,再讀配置寄存器
    寫配置寄存器,先發(fā)一個0x80 后面跟著一個32位的先高字節(jié)后低字節(jié)寫入。
    讀56位ID呢 我們先發(fā)一個0xb7  然后就是連續(xù)寫7個0進去,然后將讀到的緩沖區(qū)讀子網(wǎng)來看一下。注意到寫b7之后,我們一個一個的寫00,然后讀到SPI的值。
    先發(fā)一個0x50 復位芯片,延時1ms后,發(fā)一個Init命令,即0x70。然后發(fā)一個0x01命令等這個START信號過來。然后就是在等中斷程序了,在中斷程序中,我們要讀取這個測量的距離時間差值 通過發(fā)一個0xB0給這個讀命令。讀32位的值。

    由于這個芯片的頻率可以達到20M,故我們用10M的速度是沒什么問題的。
    此時讀32位只需要3.2us  加上前導。故總的時間在4us左右,中斷程序允許這個。
    或者我們用DMA來讀當然也是可以的。但是DMA的話就要一個緩沖區(qū)buffer5個字節(jié)。取后面的4個字節(jié)為結果值。這樣可以省去5個時鐘。那這個SPI該用那個腳呢?
    用SPI0還是空著的,可以用。經(jīng)測試SPI通訊正常,已經(jīng)可以將EN_START和FNT上測到4K和32768Hz的信號,證明設置成功。后面正式開始測量了。






    歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1