esp-hal/hil-test/tests/lcd_cam_i8080.rs
Sergio Gasquez Arcos b5f0246129
Reordered RX-TX pairs to be consistent (#2074)
* feat: Update rx-tx order in i2s

* feat: Update rx-tx order in dma macros

* feat: Update rx-tx order in spi

* feat: Update rx-tx order in aes

* feat: Update rx-tx order in mem2mem

* feat: Update rx-tx order in twai and split methods

* feat: Update rx-tx order in twai

* feat: Update rx-tx order in twai and uart docs

* docs: Add sentence about order

* docs: Update changelog

* feat: Update rx-tx order in embassy_interrupt_spi_dma tests

* style: Rustfmt

* docs: Migrating guide

* fix: Typo

Co-authored-by: Dániel Buga <bugadani@gmail.com>

* fix: Diff

Co-authored-by: Dániel Buga <bugadani@gmail.com>

* fix: Tests rx-tx order

* fix: Update new_with_default_pins order

* feat: Update rx/tx order in hil_test::common_test_pins!

* feat: Update dma_extmem2mem example

* fix: Revert deleted input arg

* style: rustfmt

* feat: Disable test_asymmetric_dma_transfer for S2

---------

Co-authored-by: Dániel Buga <bugadani@gmail.com>
2024-09-06 09:56:10 +00:00

111 lines
2.5 KiB
Rust

//! lcd_cam i8080 tests
//% CHIPS: esp32s3
#![no_std]
#![no_main]
use esp_hal::{
dma::{Dma, DmaDescriptor, DmaPriority},
dma_buffers,
gpio::DummyPin,
lcd_cam::{
lcd::i8080::{Command, Config, TxEightBits, I8080},
LcdCam,
},
prelude::*,
};
use hil_test as _;
const DATA_SIZE: usize = 1024 * 10;
struct Context<'d> {
lcd_cam: LcdCam<'d, esp_hal::Blocking>,
dma: Dma<'d>,
tx_buffer: &'static [u8],
tx_descriptors: &'static mut [DmaDescriptor],
}
#[cfg(test)]
#[embedded_test::tests]
mod tests {
use super::*;
#[init]
fn init() -> Context<'static> {
let peripherals = esp_hal::init(esp_hal::Config::default());
let dma = Dma::new(peripherals.DMA);
let lcd_cam = LcdCam::new(peripherals.LCD_CAM);
let (_, _, tx_buffer, tx_descriptors) = dma_buffers!(DATA_SIZE, 0);
Context {
lcd_cam,
dma,
tx_buffer,
tx_descriptors,
}
}
#[test]
fn test_i8080_8bit(ctx: Context<'static>) {
let channel = ctx.dma.channel0.configure(false, DmaPriority::Priority0);
let pins = TxEightBits::new(
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
);
let mut i8080 = I8080::new(
ctx.lcd_cam.lcd,
channel.tx,
ctx.tx_descriptors,
pins,
20.MHz(),
Config::default(),
);
let xfer = i8080
.send_dma(Command::<u8>::None, 0, &ctx.tx_buffer)
.unwrap();
xfer.wait().unwrap();
}
#[test]
fn test_i8080_8bit_async_channel(ctx: Context<'static>) {
let channel = ctx
.dma
.channel0
.configure_for_async(false, DmaPriority::Priority0);
let pins = TxEightBits::new(
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
DummyPin::new(),
);
let mut i8080 = I8080::new(
ctx.lcd_cam.lcd,
channel.tx,
ctx.tx_descriptors,
pins,
20.MHz(),
Config::default(),
);
let xfer = i8080
.send_dma(Command::<u8>::None, 0, &ctx.tx_buffer)
.unwrap();
xfer.wait().unwrap();
}
}