Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions applications/sdp/mspi/src/hrt/hrt-nrf54l15.s
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,11 @@ hrt_read:
li a2,0
addi a0,s0,20
call hrt_tx_rx.constprop.0
lbu a1,82(s0)
lhu a3,84(s0)
li a2,0
addi a0,s0,40
call hrt_tx_rx.constprop.0
li a5,0
.L57:
lw a4,64(s0)
Expand Down
7 changes: 6 additions & 1 deletion applications/sdp/mspi/src/hrt/hrt.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

#define SPI_INPUT_PIN_NUM 2
#define CNT1_INIT_VALUE 1
#define MSB_MASK (0xff000000)
#define MSB_MASK (0xff000000)

#define INPUT_SHIFT_COUNT (BITS_IN_WORD - BITS_IN_BYTE)

Expand Down Expand Up @@ -314,6 +314,11 @@ void hrt_read(volatile hrt_xfer_t *hrt_xfer_params)
hrt_tx_rx(&hrt_xfer_params->xfer_data[HRT_FE_ADDRESS], hrt_xfer_params->bus_widths.address,
false, hrt_xfer_params->counter_value, CNT1_INIT_VALUE);

/* Transfer dummy_cycles */
hrt_tx_rx(&hrt_xfer_params->xfer_data[HRT_FE_DUMMY_CYCLES],
hrt_xfer_params->bus_widths.dummy_cycles, false, hrt_xfer_params->counter_value,
CNT1_INIT_VALUE);

for (uint32_t i = 0; i < hrt_xfer_params->xfer_data[HRT_FE_DATA].word_count; i++) {
hrt_xfer_params->xfer_data[HRT_FE_DATA].data[i] =
nrf_vpr_csr_vio_in_buffered_reversed_byte_get() >> INPUT_SHIFT_COUNT;
Expand Down
15 changes: 15 additions & 0 deletions applications/sdp/mspi/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@

#define MAX_SHIFT_COUNT 63

#define DUMMY_CYCLES_DATA 0x00000000

#define CE_PIN_UNUSED UINT8_MAX

#define HRT_IRQ_PRIORITY 2
Expand Down Expand Up @@ -260,9 +262,15 @@ static void xfer_execute(nrfe_mspi_xfer_packet_msg_t *xfer_packet)

void prepare_and_read_data(nrfe_mspi_xfer_packet_msg_t *xfer_packet, volatile uint8_t *buffer)
{
/* TODO: rx_dummy*bus_width must be divisible by 8, remove when SHIFTCNTB changing is done.
*/
NRFX_ASSERT((nrfe_mspi_xfer_config_ptr->rx_dummy * xfer_params.bus_widths.dummy_cycles %
8) == 0);

volatile nrfe_mspi_dev_config_t *device =
&nrfe_mspi_devices[nrfe_mspi_xfer_config_ptr->device_index];
nrf_vpr_csr_vio_config_t config;
uint32_t dummy_cycles_data = DUMMY_CYCLES_DATA;

xfer_params.counter_value = 4;
xfer_params.ce_vio = ce_vios[device->ce_index];
Expand Down Expand Up @@ -298,6 +306,13 @@ void prepare_and_read_data(nrfe_mspi_xfer_packet_msg_t *xfer_packet, volatile ui
xfer_params.xfer_data[HRT_FE_ADDRESS].word_count =
nrfe_mspi_xfer_config_ptr->address_length;

/* Configure dummy_cycles phase. */
xfer_params.xfer_data[HRT_FE_DUMMY_CYCLES].fun_out = HRT_FUN_OUT_WORD;
xfer_params.xfer_data[HRT_FE_DUMMY_CYCLES].data = (uint8_t *)&dummy_cycles_data;
xfer_params.xfer_data[HRT_FE_DUMMY_CYCLES].word_count =
nrfe_mspi_xfer_config_ptr->rx_dummy * xfer_params.bus_widths.dummy_cycles /
BITS_IN_BYTE;

/* Configure data phase. */
xfer_params.xfer_data[HRT_FE_DATA].word_count = xfer_packet->num_bytes;

Expand Down
Loading