SPI PIC PPS картография - PullRequest
1 голос
/ 19 апреля 2019

Здравствуйте, мне нужно связаться с двойным ЦАП с помощью SPI. ЦАП: ЦАП

Я использую PIC 18F26K83. Я буду только передавать данные в ЦАП, я ничего не получу. Так я установил связь между моим PIC и ЦАП (см. Изображение на рисунке). Поэтому мой вопрос связан с отображением PPS и конфигурациями контактов: RC7 подключен к DIN-контакту ЦАП, RC6 подключен к

Нужно ли мне также отображать мои выводы как входы? Вот как я сделал отображение PPS, но я не совсем уверен:

Я использовал регистр RxyPPS (Страница: 267), чтобы установить мои контакты в качестве источников вывода, используя таблицу 17-2 (Страница: 268)

RC7PPS= 0b00011111 ; //DIN, RC7 = SDIPPS
RC6PPS= 0b00100000; //CS, RC6= SSPPS
RC5PPS= 0b00011110; //SCLK, RC5=SCKPPS

Так что я считаю, что этого достаточно для установки их в качестве вывода. Мне также нужно установить их в качестве входных данных?

Я знаю, что это не имеет смысла, но я запутался в использовании регистра RxxxPPS.

1 Ответ

1 голос
/ 25 апреля 2019

Если вы передаете данные в ЦАП, я бы предположил, что PIC должен быть установлен в качестве основного режима SPI - т. Е. Вывод SS не будет использоваться на PIC - поэтому вы не должны устанавливать PPS для RC6, так как это Вывод CS для ЦАП, он должен быть установлен как простой выход GPIO

LATCbits.LATC6 = 1; // initialise high
TRISCbits.TRISC6 = 0;  // output

Вы также должны добавить последовательность блокировки / разблокировки PPS и, возможно, потребуется установить SCLK в качестве входа, даже если он односторонний.

// disable interrupts (if req)
INTCON0bits.GIE = 0;
// PPS unlock sequence
PPSLOCK = 0x55;
PPSLOCK = 0xAA;
PPSLOCKbits.PPSLOCKED = 0; // PPS is not locked

RC7PPS = 0b00011111; // SDO (DAC DIN) RC7
RC5PPS = 0b00011110; //SCLK OUTPUT RC5=SCKPPS
SPI1SCKPPS = 0b00010101; // SCLK INPUT RC5

// PPS lock sequence
PPSLOCK = 0x55;
PPSLOCK = 0xAA;
PPSLOCKbits.PPSLOCKED = 1; // PPS is locked
// enable interrupts (if req)
INTCON0bits.GIE = 1;

В стороне - убедитесь, что SPI установлен в основной режим и режим «только передача».

SPI1CON0bits.MST = 1; // bus master
SPI1CON2bits.RXR = 0; // transmit only
SPI1CON2bits.TXR = 1; // transmit only
...