Tested 20m and LSB
This commit is contained in:
parent
929df22f4e
commit
4878a1a771
27
src/main.rs
27
src/main.rs
|
@ -41,6 +41,7 @@ mod app {
|
|||
i2c::{self, I2c},
|
||||
pac::{ADC1, DMA1, DMA2, I2C1, SPI1, TIM2, TIM4},
|
||||
prelude::*,
|
||||
qei,
|
||||
spi::{self, Spi},
|
||||
timer::{
|
||||
self, Channel, Channel1, Channel3, ChannelBuilder, CounterHz, Event, PwmHz, CCR, CCR3,
|
||||
|
@ -124,6 +125,15 @@ mod app {
|
|||
|
||||
let board_led = gpioc.pc13.into_push_pull_output();
|
||||
|
||||
/*
|
||||
let enc_a = gpioa.pa5.into_input();
|
||||
let enc_b = gpiob.pb3.into_input();
|
||||
|
||||
let encoder = qei::Qei::new(cx.device.TIM2, (enc_a, enc_b));
|
||||
|
||||
defmt::info!("Encoder Setup done");
|
||||
*/
|
||||
|
||||
let scl = gpiob.pb6.into_alternate_open_drain();
|
||||
let sda = gpiob.pb7.into_alternate_open_drain();
|
||||
let mut i2c = i2c::I2c::new(
|
||||
|
@ -137,16 +147,24 @@ mod app {
|
|||
|
||||
let mut pll = si5153::Si5153::new(&i2c);
|
||||
|
||||
pll.init(&mut i2c, 25000000, 800000000, 800000000);
|
||||
/*
|
||||
let phase = 100;
|
||||
let freq = 7_100_000;
|
||||
*/
|
||||
|
||||
let phase = 36;
|
||||
let freq = 14_125_000;
|
||||
|
||||
pll.init(&mut i2c, 25_000_000, freq * phase, freq * phase);
|
||||
pll.set_ms_source(&mut i2c, si5153::Multisynth::MS0, si5153::PLL::A);
|
||||
pll.set_ms_source(&mut i2c, si5153::Multisynth::MS1, si5153::PLL::A);
|
||||
pll.set_ms_source(&mut i2c, si5153::Multisynth::MS2, si5153::PLL::B);
|
||||
|
||||
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS0, 8_000_000);
|
||||
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS0, freq);
|
||||
pll.set_ms_phase(&mut i2c, si5153::Multisynth::MS0, 0);
|
||||
pll.enable_ms_output(&mut i2c, si5153::Multisynth::MS0);
|
||||
|
||||
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS1, 8_000_000);
|
||||
pll.set_ms_freq(&mut i2c, si5153::Multisynth::MS1, freq);
|
||||
pll.set_ms_phase(&mut i2c, si5153::Multisynth::MS1, 100);
|
||||
pll.enable_ms_output(&mut i2c, si5153::Multisynth::MS1);
|
||||
|
||||
|
@ -358,7 +376,8 @@ mod app {
|
|||
cx.shared.audio_buffer.lock(|buffer| {
|
||||
let audio_buffer = buffer.take().unwrap();
|
||||
for idx in 0..samples.len() {
|
||||
let filtered = usb_filter.compute(samples[idx]);
|
||||
//let filtered = usb_filter.compute(samples[idx]);
|
||||
let filtered = usb_filter.compute(Complex::new(samples[idx].im, samples[idx].re));
|
||||
fft_input[idx] = samples[idx];
|
||||
|
||||
audio_buffer[idx] = ((filtered.re * (audio_max_duty as f32)) * 3.0f32) as u16;
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from scipy import signal
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
|
||||
def main():
|
||||
fs = 6400.0
|
||||
coeffs = signal.firls(63, (0, 1150, 1200, fs/2), (1, 1, 0, 0), fs=fs)
|
||||
|
||||
freq_space = np.linspace(-fs/2 / (fs/2)*np.pi, fs/2 / (fs/2)*np.pi, 512)
|
||||
freqs, response = signal.freqz(coeffs, worN=freq_space)
|
||||
response = 10 * np.log(abs(response))
|
||||
plt.plot(fs/2*freqs/(np.pi), response)
|
||||
plt.grid()
|
||||
plt.show()
|
||||
|
||||
f0 = (1200 + 50) / fs
|
||||
complex_coeffs = []
|
||||
for n in range(0, len(coeffs)):
|
||||
complex_coeffs += [coeffs[n] * np.exp(1j * 2 * np.pi * f0 * n)]
|
||||
complex_coeffs = np.array(complex_coeffs)
|
||||
|
||||
print(complex_coeffs)
|
||||
|
||||
freq_space = np.linspace(-fs/2 / (fs/2)*np.pi, fs/2 / (fs/2)*np.pi, 512)
|
||||
freqs, response = signal.freqz(complex_coeffs, worN=freq_space)
|
||||
response = 10 * np.log(abs(response))
|
||||
plt.plot(fs/2*freqs/(np.pi), response)
|
||||
plt.grid()
|
||||
plt.show()
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue