tof_control/rb_control/
rb_dac.rs1use crate::constant::*;
2use crate::helper::rb_type::RBError;
3use crate::device::{ad5675, pca9548a};
4
5pub fn set_dac() -> Result<(), RBError> {
6 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_2);
7 i2c_mux.select(RB_AD5675_CHANNEL)?;
8 let ad5675 = ad5675::AD5675::new(RB_AD5675_ADDRESS);
9
10 ad5675.write_dac(0, 25600);
26 ad5675.write_dac(1, 25600);
28 ad5675.write_dac(2, 42500);
32 ad5675.write_dac(3, 32000);
35 ad5675.write_dac(4, 22400);
37
38 i2c_mux.reset()?;
39
40 Ok(())
41
42}
43
44pub fn set_dac_500() -> Result<(), RBError> {
45 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_2);
46 i2c_mux.select(RB_AD5675_CHANNEL)?;
47 let ad5675 = ad5675::AD5675::new(RB_AD5675_ADDRESS);
48
49 ad5675.write_dac(2, 49600);
50
51 i2c_mux.reset()?;
52
53 Ok(())
54}
55
56pub fn dac_noi_mode() -> Result<(), RBError> {
57 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_2);
58 i2c_mux.select(RB_AD5675_CHANNEL)?;
59 let ad5675 = ad5675::AD5675::new(RB_AD5675_ADDRESS);
60
61 ad5675.write_dac(1, 25600);
62
63 i2c_mux.reset()?;
64
65 Ok(())
66}
67
68pub fn dac_vcal_mode() -> Result<(), RBError> {
69 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_2);
70 i2c_mux.select(RB_AD5675_CHANNEL)?;
71 let ad5675 = ad5675::AD5675::new(RB_AD5675_ADDRESS);
72
73 ad5675.write_dac(1, 46400);
74
75 i2c_mux.reset()?;
76
77 Ok(())
78}
79
80pub fn dac_tcal_mode() -> Result<(), RBError> {
81 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_2);
82 i2c_mux.select(RB_AD5675_CHANNEL)?;
83 let ad5675 = ad5675::AD5675::new(RB_AD5675_ADDRESS);
84
85 ad5675.write_dac(1, 25600);
86
87 i2c_mux.reset()?;
88
89 Ok(())
90}
91
92pub fn dac_sma_mode() -> Result<(), RBError> {
93 let i2c_mux = pca9548a::PCA9548A::new(I2C_BUS, RB_PCA9548A_ADDRESS_2);
94 i2c_mux.select(RB_AD5675_CHANNEL)?;
95 let ad5675 = ad5675::AD5675::new(RB_AD5675_ADDRESS);
96
97 ad5675.write_dac(1, 25600);
98
99 i2c_mux.reset()?;
100
101 Ok(())
102}