SPI를 PIC32MX250F128D에서 작동 시키려면 많은 노력이 필요합니다.PIC32 SPI가 작동하지 않습니다.
8 비트 모드와 32 비트 모드로 시도했지만 데이터가 전혀 없거나 데이터가 전혀 없습니다.
4MHz SPI를 사용하여 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;
}
순간 :
이
는 내가 가지고있는 코드입니다. 누구의 잘못인지 알고 있습니까?로렌스는
실제로 코딩 오류는 있지만 문제를 해결하지 못했던 부분입니다. –
로직 애널라이저를 사용하여 PIC에서 아무것도 나오지 않았는지 확인하지만 아무것도 보내지 않습니다. –
@LaurensWuyts 내가 말했듯이 기본 회로로 SPI 초기화 코드를 확인하십시오. 작동하지 않는다면 온라인 PIC 용 예제를 찾아보십시오. – TisteAndii