藍(lán)牙心率防水運(yùn)動(dòng)手環(huán) ——瘋殼·智能穿戴開發(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; 中斷或者輪詢操作模式; 可編程的數(shù)據(jù)線保持時(shí)間; 本次使用的三軸傳感器是 LIS2DS12。LIS2DS12 是一種超低功率高性能三軸線性加速度計(jì),具有用戶可選擇的尺寸 2G/4G/8G/16G,能夠測(cè)量輸出數(shù)據(jù)速率從1Hz 到 6400Hz 的加速度。并且具有集成的 256 級(jí)先入先出(FIFO)緩沖器,讓用戶在存儲(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,打開之后,當(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); 第二步,就是通過下面函數(shù)初始化 I2C。 ![]() 代碼1 完成 I2C 的初始化之后, 我們就可以通過 i2c_eeprom_read_byte(uint32_taddress, uint8_t *byte) 對(duì) LIS2DS12 進(jìn) 行 讀 操 作 , 通 過 i2c_eeprom_write_byte(uint32_t address, uint8_t byte)對(duì) LIS2DS12 進(jìn)行寫操作。 通過 I2C 的讀寫函數(shù),對(duì) LIS2DS12 寄存器進(jìn)行讀寫,就能使用 LIS2DS12。詳細(xì)資料可以查詢 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)串口,然后打開打開串口調(diào)試助手。 (1)選擇串口號(hào),我們圖中是 COM1,這個(gè)根據(jù)實(shí)際情況選擇。 (2)配置串口參數(shù),波特率為 115200,數(shù)據(jù)位 8,停止位 1,沒有校驗(yàn)位和控制流,與下圖一致。 (3)點(diǎn)擊打開串口。 ![]() 圖 2 配置完串口之后,打開我們提供的代碼。 (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 配套資料:https://www.fengke.club/GeekMart/su_fkZyGYgrp.jsp 配套視頻:https://www.fengke.club/GeekMart/su_fTSgUL3y3.jsp 套件地址:http://shop115904315.taobao.com 文件下載請(qǐng)點(diǎn)擊: ![]() |