Improved NFC reading speed
This commit is contained in:
+5
-2
@@ -17,6 +17,7 @@ use creaturedex::navigation::inputs::Inputs;
|
||||
use creaturedex::navigation::navigation::{self, CARD_DATA};
|
||||
use creaturedex::network::wifi::setup_wifi;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_time::Instant;
|
||||
use embedded_hal_bus::i2c::AtomicDevice;
|
||||
use embedded_hal_bus::util::AtomicCell;
|
||||
use esp_hal::Blocking;
|
||||
@@ -68,7 +69,7 @@ async fn main(spawner: Spawner) {
|
||||
peripherals.GPIO12, // shared dc
|
||||
)));
|
||||
|
||||
let config = I2cConfig::default().with_frequency(esp_hal::time::Rate::from_khz(20));
|
||||
let config = I2cConfig::default().with_frequency(esp_hal::time::Rate::from_khz(400));
|
||||
let i2c = match I2c::new(peripherals.I2C0, config) {
|
||||
Ok(bus) => bus.with_sda(peripherals.GPIO17).with_scl(peripherals.GPIO18),
|
||||
Err(e) => {
|
||||
@@ -113,14 +114,16 @@ async fn main(spawner: Spawner) {
|
||||
async fn nfc_driver_task(mut nfc_driver: NfcPn532Driver<AtomicDevice<'static, I2c<'static, Blocking>>>) {
|
||||
loop {
|
||||
while CARD_DATA.lock().await.is_none() {
|
||||
let start = Instant::now();
|
||||
match nfc_driver.read_card_data().await {
|
||||
Ok(card_data) => {
|
||||
log::info!("NFC Card Data Read: {:?}", card_data);
|
||||
let Some(split_data) = split_nfc_hex(&card_data) else {
|
||||
log::error!("Failed to split NFC card data");
|
||||
continue;
|
||||
};
|
||||
CARD_DATA.lock().await.replace(Card::try_from(split_data).unwrap());
|
||||
let elapsed_ms = start.elapsed().as_millis();
|
||||
log::info!("NFC read duration: {} ms, card data length: {}", elapsed_ms, card_data.len());
|
||||
}
|
||||
Err(_) => {
|
||||
log::info!("No NFC card found");
|
||||
|
||||
Reference in New Issue
Block a user