|
——瘋殼·智能穿戴開發系列 三軸計步伐
三軸記步
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
文件下載請點擊:
6_(100%開源)藍牙心率防水運動手環_三軸計步伐.pdf
(612.82 KB)
2022-8-26 16:12 上傳
點擊文件名下載附件
下載積分: 積分 -1
|
|