開(kāi)源 藍(lán)牙心率防水運(yùn)動(dòng)手環(huán) ——瘋殼·智能穿戴開(kāi)發(fā)系列 三軸計(jì)步伐
三軸記步
1相關(guān)簡(jiǎn)介
本次,我們將使用 DA14580 的硬件 I2C 讀取三軸傳感器的步數(shù)。
I2C 總線是一個(gè)為系統(tǒng)中電路通信提供支持的可編程控制總線,它是一個(gè)軟件定義的兩線通信協(xié)議。
兩線 I2C 串行接口包括一個(gè)串行數(shù)據(jù)線(SDA)和一個(gè)串行時(shí)鐘線(SCL);
支持兩種通行速率,標(biāo)準(zhǔn)模式(0~100Kb/s)和快速模式(小于等于 400Kb/s);
時(shí)鐘同步;
32 字節(jié)的發(fā)送接收 FIFO;
主機(jī)發(fā)送與接收操作;
7 或 10 位地址,7 或 10 位混合格式發(fā)送;
塊發(fā)送模式;
默認(rèn)從地址為 0x055;
中斷或者輪詢(xún)操作模式;
可編程的數(shù)據(jù)線保持時(shí)間;
本次使用的三軸傳感器是 LIS2DS12。LIS2DS12 是一種超低功率高性能三軸線性加速度計(jì),具有用戶(hù)可選擇的尺寸 2G/4G/8G/16G,能夠測(cè)量輸出數(shù)據(jù)速率從1Hz 到 6400Hz 的加速度。并且具有集成的 256 級(jí)先入先出(FIFO)緩沖器,讓用戶(hù)在存儲(chǔ)數(shù)據(jù)時(shí),限制主機(jī)處理器的干預(yù)。LIS2DS12 支持 SPI 和 I2C 兩種接口, 我們這里采用的 I2C 接口。
2硬件設(shè)計(jì)
LIS2DS12 一共有 12 引腳。1 腳 SCL 是時(shí)鐘信號(hào)。2 腳 CS 是 SPI/I2C 使能引腳。第 3 引腳是 SPI 的數(shù)據(jù)輸出,由于這里用的 I2C,這個(gè)引腳空余。引腳 SDA 是 I2C 用來(lái)傳送數(shù)據(jù)的。還有兩個(gè)中斷腳 INT1、INT2,打開(kāi)之后,當(dāng) LIS2DS12 檢測(cè)到步數(shù),能產(chǎn)生中斷電平。
圖 1
3軟件設(shè)計(jì)
首先,完成系統(tǒng)初始化,調(diào)用 system_init(),可以參考前面的電量檢測(cè)。接 下 來(lái) 就 是 I2C 的 使 用 了 。 第 一 步 我 們 配 置 I2C 的 相 關(guān) 引 腳 。
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
第二步,就是通過(guò)下面函數(shù)初始化 I2C。
代碼1
完成 I2C 的初始化之后, 我們就可以通過(guò) i2c_eeprom_read_byte(uint32_taddress, uint8_t *byte) 對(duì) LIS2DS12 進(jìn) 行 讀 操 作 , 通 過(guò)
i2c_eeprom_write_byte(uint32_t address, uint8_t byte)對(duì) LIS2DS12 進(jìn)行寫(xiě)操作。
通過(guò) I2C 的讀寫(xiě)函數(shù),對(duì) LIS2DS12 寄存器進(jìn)行讀寫(xiě),就能使用 LIS2DS12。詳細(xì)資料可以查詢(xún) LIS2DS12 的 datasheet。
首先,我們是調(diào)用函數(shù) status_t LIS2DS12_ACC_R_WHO_AM_I_BIT(u8_t *value) 讀 取 設(shè) 備 ID , 判 定 是 否 為 正 確 的 設(shè) 備 。 然 后 , 我 們 調(diào) 用LIS2DS12_ACC_W_SOFT_RESET(LIS2DS12_ACC_SOFT_RESET_t newValue),軟件初始化 LIS2DS12 設(shè)備。如果讀取設(shè)備錯(cuò)誤或者軟件初始化不成功,DA14580 會(huì)進(jìn)入一個(gè)空的死循環(huán)。最后,我們會(huì)進(jìn)入 Loop_Test_Pedometer(),記步測(cè)試。
代碼2
4 實(shí)驗(yàn)現(xiàn)象
首先,插好 Jlink 和 USB 轉(zhuǎn)串口,然后打開(kāi)打開(kāi)串口調(diào)試助手。
(1)選擇串口號(hào),我們圖中是 COM1,這個(gè)根據(jù)實(shí)際情況選擇。
(2)配置串口參數(shù),波特率為 115200,數(shù)據(jù)位 8,停止位 1,沒(méi)有校驗(yàn)位和控制流,與下圖一致。
(3)點(diǎn)擊打開(kāi)串口。
圖 2
配置完串口之后,打開(kāi)我們提供的代碼。
(1)點(diǎn)擊仿真按鍵。
圖 3
(2)點(diǎn)擊運(yùn)行代碼。
圖 4
完成上述操作,就會(huì)看到串口調(diào)試助手區(qū)域 4 中會(huì)顯示出步數(shù),我們搖晃單片機(jī),會(huì)發(fā)現(xiàn)串口調(diào)試助手打印出新的步數(shù),并且步數(shù)在增加。
圖 5
文件下載請(qǐng)點(diǎn)擊:
6_(100%開(kāi)源)藍(lán)牙心率防水運(yùn)動(dòng)手環(huán)_三軸計(jì)步伐.pdf
(612.82 KB)
2022-8-26 16:12 上傳
點(diǎn)擊文件名下載附件
下載積分: 積分 -1
|