藍牙心率防水運動手環 ——瘋殼·智能穿戴開發系列 三軸計步伐 三軸記步 1相關簡介 本次,我們將使用 DA14580 的硬件 I2C 讀取三軸傳感器的步數。 I2C 總線是一個為系統中電路通信提供支持的可編程控制總線,它是一個軟件定義的兩線通信協議。 兩線 I2C 串行接口包括一個串行數據線(SDA)和一個串行時鐘線(SCL); 支持兩種通行速率,標準模式(0~100Kb/s)和快速模式(小于等于 400Kb/s); 時鐘同步; 32 字節的發送接收 FIFO; 主機發送與接收操作; 7 或 10 位地址,7 或 10 位混合格式發送; 塊發送模式; 默認從地址為 0x055; 中斷或者輪詢操作模式; 可編程的數據線保持時間; 本次使用的三軸傳感器是 LIS2DS12。LIS2DS12 是一種超低功率高性能三軸線性加速度計,具有用戶可選擇的尺寸 2G/4G/8G/16G,能夠測量輸出數據速率從1Hz 到 6400Hz 的加速度。并且具有集成的 256 級先入先出(FIFO)緩沖器,讓用戶在存儲數據時,限制主機處理器的干預。LIS2DS12 支持 SPI 和 I2C 兩種接口, 我們這里采用的 I2C 接口。 2硬件設計 LIS2DS12 一共有 12 引腳。1 腳 SCL 是時鐘信號。2 腳 CS 是 SPI/I2C 使能引腳。第 3 引腳是 SPI 的數據輸出,由于這里用的 I2C,這個引腳空余。引腳 SDA 是 I2C 用來傳送數據的。還有兩個中斷腳 INT1、INT2,打開之后,當 LIS2DS12 檢測到步數,能產生中斷電平。 ![]() 圖 1 3軟件設計 首先,完成系統初始化,調用 system_init(),可以參考前面的電量檢測。接 下 來 就 是 I2C 的 使 用 了 。 第 一 步 我 們 配 置 I2C 的 相 關 引 腳 。 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); 第二步,就是通過下面函數初始化 I2C。 ![]() 代碼1 完成 I2C 的初始化之后, 我們就可以通過 i2c_eeprom_read_byte(uint32_taddress, uint8_t *byte) 對 LIS2DS12 進 行 讀 操 作 , 通 過 i2c_eeprom_write_byte(uint32_t address, uint8_t byte)對 LIS2DS12 進行寫操作。 通過 I2C 的讀寫函數,對 LIS2DS12 寄存器進行讀寫,就能使用 LIS2DS12。詳細資料可以查詢 LIS2DS12 的 datasheet。 首先,我們是調用函數 status_t LIS2DS12_ACC_R_WHO_AM_I_BIT(u8_t *value) 讀 取 設 備 ID , 判 定 是 否 為 正 確 的 設 備 。 然 后 , 我 們 調 用LIS2DS12_ACC_W_SOFT_RESET(LIS2DS12_ACC_SOFT_RESET_t newValue),軟件初始化 LIS2DS12 設備。如果讀取設備錯誤或者軟件初始化不成功,DA14580 會進入一個空的死循環。最后,我們會進入 Loop_Test_Pedometer(),記步測試。 ![]() 代碼2 4 實驗現象 首先,插好 Jlink 和 USB 轉串口,然后打開打開串口調試助手。 (1)選擇串口號,我們圖中是 COM1,這個根據實際情況選擇。 (2)配置串口參數,波特率為 115200,數據位 8,停止位 1,沒有校驗位和控制流,與下圖一致。 (3)點擊打開串口。 ![]() 圖 2 配置完串口之后,打開我們提供的代碼。 (1)點擊仿真按鍵。 ![]() 圖 3 (2)點擊運行代碼。 ![]() 圖 4 完成上述操作,就會看到串口調試助手區域 4 中會顯示出步數,我們搖晃單片機,會發現串口調試助手打印出新的步數,并且步數在增加。 ![]() 圖 5 配套資料:https://www.fengke.club/GeekMart/su_fkZyGYgrp.jsp 配套視頻:https://www.fengke.club/GeekMart/su_fTSgUL3y3.jsp 套件地址:http://shop115904315.taobao.com 文件下載請點擊: ![]() |