Skip to content

Commit 9104681

Browse files
committed
applications: sdp: mspi: Dummy clocks in rx mode
Iplemented Dummy clocks support for rx mode. Signed-off-by: Michal Frankiewicz <[email protected]>
1 parent 9a87aab commit 9104681

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

applications/sdp/mspi/src/hrt/hrt-nrf54l15.s

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,11 @@ hrt_read:
487487
li a2,0
488488
addi a0,s0,20
489489
call hrt_tx_rx.constprop.0
490+
lbu a1,82(s0)
491+
lhu a3,84(s0)
492+
li a2,0
493+
addi a0,s0,40
494+
call hrt_tx_rx.constprop.0
490495
li a5,0
491496
.L57:
492497
lw a4,64(s0)

applications/sdp/mspi/src/hrt/hrt.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
#define SPI_INPUT_PIN_NUM 2
1414
#define CNT1_INIT_VALUE 1
15-
#define MSB_MASK (0xff000000)
15+
#define MSB_MASK (0xff000000)
1616

1717
#define INPUT_SHIFT_COUNT (BITS_IN_WORD - BITS_IN_BYTE)
1818

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

317+
/* Transfer dummy_cycles */
318+
hrt_tx_rx(&hrt_xfer_params->xfer_data[HRT_FE_DUMMY_CYCLES],
319+
hrt_xfer_params->bus_widths.dummy_cycles, false, hrt_xfer_params->counter_value,
320+
CNT1_INIT_VALUE);
321+
317322
for (uint32_t i = 0; i < hrt_xfer_params->xfer_data[HRT_FE_DATA].word_count; i++) {
318323
hrt_xfer_params->xfer_data[HRT_FE_DATA].data[i] =
319324
nrf_vpr_csr_vio_in_buffered_reversed_byte_get() >> INPUT_SHIFT_COUNT;

applications/sdp/mspi/src/main.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828

2929
#define MAX_SHIFT_COUNT 63
3030

31+
#define DUMMY_CYCLES_DATA 0x00000000
32+
3133
#define CE_PIN_UNUSED UINT8_MAX
3234

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

261263
void prepare_and_read_data(nrfe_mspi_xfer_packet_msg_t *xfer_packet, volatile uint8_t *buffer)
262264
{
265+
/* TODO: rx_dummy*bus_width must be divisible by 8, remove when SHIFTCNTB changing is done.
266+
*/
267+
NRFX_ASSERT((nrfe_mspi_xfer_config_ptr->rx_dummy * xfer_params.bus_widths.dummy_cycles %
268+
8) == 0);
269+
263270
volatile nrfe_mspi_dev_config_t *device =
264271
&nrfe_mspi_devices[nrfe_mspi_xfer_config_ptr->device_index];
265272
nrf_vpr_csr_vio_config_t config;
273+
uint32_t dummy_cycles_data = DUMMY_CYCLES_DATA;
266274

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

309+
/* Configure dummy_cycles phase. */
310+
xfer_params.xfer_data[HRT_FE_DUMMY_CYCLES].fun_out = HRT_FUN_OUT_WORD;
311+
xfer_params.xfer_data[HRT_FE_DUMMY_CYCLES].data = (uint8_t *)&dummy_cycles_data;
312+
xfer_params.xfer_data[HRT_FE_DUMMY_CYCLES].word_count =
313+
nrfe_mspi_xfer_config_ptr->rx_dummy * xfer_params.bus_widths.dummy_cycles /
314+
BITS_IN_BYTE;
315+
301316
/* Configure data phase. */
302317
xfer_params.xfer_data[HRT_FE_DATA].word_count = xfer_packet->num_bytes;
303318

0 commit comments

Comments
 (0)