У меня есть общий подход, когда данные в SDRAM передаются SPIC.DATA. Я добавил функцию задержки для настройки моего цифрового сигнала с частотой дискретизации.
/* Transfer data from internal memory via SPI from Master to Slave */
if ( (SWITCHPORTL.IN & PIN2_bm) == 0 )
{
flip = false;
j = 0;
while (j < NUM_BYTES)
{
if (flip == false)
{
// Set slave select line low (active) for Port C
PORTC.OUTCLR = PIN4_bm;
}
// Give the data to the data register of the Master
SPIC.DATA = __far_mem_read(j+SDRAM_ADDR);
if (flip == true)
{
// wait for the 2nd 8-bit-block to be send
-> delay 0.7us
_delay_us(0.7);
// Set slave select line high (inactive)
PORTC.OUTSET = PIN4_bm;
// delay to adjust to sampling frequency
100 kHz -> 6.9us; 200kHz -> 1.9us
_delay_us(1.9); }
flip = !flip;
j++;
}}
Как я могу назвать два ведомых выбора для этого таким образом, чтобы данные в SDRAM передавались этим двум ведомым поочередно поочередно один за другим? Давайте рассмотрим данные, хранящиеся в SDRAM, как A1A2A3A4A5 и т. Д., Поэтому A1 A3 A5 … это один набор Данные, которые должны быть переданы в мой нечетный выбор ведомого, а A2 A4 A6 … это четный набор данных для другого ведомого.
Как говорит Лундин, вам нужно решить, как подключить подчиненные к вашему контроллеру. 128A1 имеет несколько вариантов.
Я предлагаю вариант 1 или 2. Как только вы подключите подчиненные, программирование будет очень похоже на то, что у вас уже есть.