私は多くの運を必要とせずにPIC32MX250F128Dで動作するSPIを取得しようとしています。PIC32 SPIが動作しません
私は8ビットモードと32ビットモードで試しましたが、私はすべてのデータを取得しているわけではありません。
私は4MHzのSPIを使ってWS2812のLEDストリップを駆動しようとしています。コントローラから出てくるものは何もありません現時点で
#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