Я пытаюсь получить SPI, работающий на PIC32MX250F128D без большой удачи.PIC32 SPI не работает
Я пробовал в 8-битном режиме и 32-битном режиме, но я не получаю все данные или данные вообще.
Я пытаюсь использовать SPI 4 МГц для управления светодиодной подсветкой WS2812.
Это код, у меня есть:
#include <xc.h>
#include <peripheral/system.h>
#include "config.h"
void settings(void);
char Send_SPI(unsigned char);
int main(void) {
int i, j;
unsigned char scrapdata;
unsigned char buffer[6] = {0x12, 0x34, 0x56, 0x78, 0x90, 0x01};
settings();
while(1) {
Send_SPI(buffer[j]);
j = (j > 4)? 0 : j++;
for(i = 0; i < 300; i++);
}
return 0;
}
void settings(void) {
SYSTEMConfigPerformance(SYS_FREQ);
TRISB &= 0xFFFB;
RPB2R = 0x3;
SPI1STAT = 0;
SPI1CON = 0;
unsigned int rData = SPI1BUF;
// => 4MHz = 48MHz/(2 * (5 + 1))
SPI1BRG = 5;
SPI1STATCLR = 0x40; // clear the Overflow
SPI1CON = 0x00008230;
}
char Send_SPI(unsigned char buffer) {
//while(!(SPI1STAT & 0x2));
SPI1BUF = buffer;
while(!(SPI1STAT & 0x1)); // wait transfer complete
char scrapdata = SPI1BUF; //read to clear SPI2BUF before reload
return scrapdata;
}
На данный момент нет ничего выходящего из контроллера. Кто-нибудь из вас знает, что случилось?
Лоренса
Те, где действительно были ошибки кодирования, но они не исправили проблему. –
Я использую логический анализатор, чтобы проверить, не выходит ли что-либо из ПОС, но ничего не отправляется. –
@ LaurensWuyts Как я уже сказал, проверьте код инициализации SPI с помощью базовой схемы. Если он не работает, ищите примеры онлайн для своего ПОС. – TisteAndii