2个版本
0.1.1 | 2021年6月13日 |
---|---|
0.1.0 | 2021年6月13日 |
#1765 在 嵌入式开发
69KB
574 代码行
适用于TMAG5170-Q1 3D霍尔传感器的平台无关的Rust驱动程序
TMAG5170-Q1是一种针对汽车和工业应用的3轴线性霍尔效应传感器。该设备在X、Y和Z轴集成了3个独立的霍尔传感器。一个高精度的模拟信号链路和集成的12位ADC将测量的模拟磁场值数字化。SPI接口可以被外部微控制器用来配置设备、启动转换或读取设备寄存器数据。芯片上集成的温度传感器数据可用于多个系统功能,例如安全检查和给定磁场测量的温度补偿。
设备
https://www.ti.com/product/TMAG5170-Q1
用法
将此驱动程序包含到您的Cargo.toml中
[dependencies]
tmag5170 = "<version>"
使用嵌入式-hal实现来获取SPI和用于芯片选择的GPIO OutputPin,然后创建磁力计句柄。以下是驱动程序的基本用法。
use tmag5170::{self, ExtError, device_config, sensor_config, system_config, alert_config};
...
let mut tmag5170 = tmag5170::Tmag5170::new(spi, cs);
let config = sensor_config::SensorConfig::new()
.set_angle_en(sensor_config::AngleEn::Xy)
.set_sleep_time(sensor_config::SleepTime::Ms500)
.set_mag_ch_en(sensor_config::MagChEn::Xyz)
.set_z_range(sensor_config::Range::A1_100mT_A2_300mT)
.set_y_range(sensor_config::Range::A1_100mT_A2_300mT)
.set_x_range(sensor_config::Range::A1_100mT_A2_300mT);
let _ = tmag5170.apply_sensor_config(config);
let config = system_config::SystemConfig::new()
.set_diag_sel(system_config::DiagSel::AllDataInSeq)
.set_trigger_mode(system_config::TriggerMode::Spi)
.set_data_type(system_config::DataType::AM)
.set_diag_sel(system_config::DiagSel::AllDataInSeq)
.set_diag_en(false)
.set_t_z_limit_check(false)
.set_t_y_limit_check(false)
.set_t_x_limit_check(false);
let _ = tmag5170.apply_system_config(config);
let config = alert_config::AlertConfig::new()
.set_alert_latch(alert_config::AlertLatch::NotLatched)
.set_alert_mode(alert_config::AlertMode::Interrupt)
.set_rslt_alrt_enable(true);
let _ = tmag5170.apply_alert_config(config);
let config = device_config::DeviceConfig::new()
.set_conv_avg(device_config::ConvAvg::Avg32x)
.set_mag_tempco(device_config::MagTempco::NdBFe)
// WakeupAndSleep doesn't work in pre-release device
.set_operating_mode(device_config::OperatingMode::Active)
.set_t_en(true)
.set_t_rate(device_config::TRate::OncePerConvSet)
.set_t_limit_check_en(false)
.set_t_comp_en(true);
let _ = tmag5170.apply_device_config(config);
let res = tmag5170.read_am();
match res {
Err(ext) =>
match ext {
ExtError::CrcError => rprintln!("Crc Error"),
ExtError::E(_e) => rprintln!("SPI Error"),
},
Ok((a,m)) => rprintln!("Angle {:3} deg, magnitude {}", a / 8, m),
}
依赖项
要使用此模板构建嵌入式程序,您需要
- Rust 1.31,1.30-beta,nightly-2018-09-13或更新的工具链。例如
rustup default beta
许可协议
此模板根据您选择之一许可
-
Apache许可证第2版 (https://apache.ac.cn/licenses/LICENSE-2.0)
-
MIT许可证 (http://opensource.org/licenses/MIT)
。
贡献
除非您明确表示,否则您有意提交的任何贡献,根据Apache-2.0许可证定义,将根据上述条款双许可,不附加任何额外条款或条件。
行为准则
此crate的贡献根据 Rust行为准则 组织,此crate的维护者、Cortex-M团队 承诺将介入以维护该行为准则。
限制
目前,CRC4表存储在每个tmag5170实例中。在系统中只有tmag5170的情况下,这不应该成为问题
依赖项
~84KB