ESP8266 hspi 디버그

1966 단어 ESP8266
요 두 주일 동안 기본적으로 모두 이 구덩이를 기어오르고 있으니, 솜씨는 마음에 드는 사람을 저버리지 않는다.드디어 끝났어, 사실 아주 간단해.이 물건이 얼마나 복잡한지 알지만, 사실은 그렇지 않다.몇몇 인터넷 블로거들에게 오도당했다!8266단: ESP 8266NONOS_SDK-3.0\examples\peripheral_test\user\spi_테스트 8266은 단편기에서 호스트로 하면 8266 레지스터 SPIW0----SPI_W7 쓰기 작업을 통해 8266 레지스터 SPI를 성공적으로 읽을 수 있음W8----SPI_W16 내부 데이터 읽기
단편기 마스터단: 전송 데이터 형식: CMD(1byte)+ADDR(1byte)+DATA, 전체 과정은 매우 간단합니다. 이 형식으로 보내면 전체 과정 CS가 낮아집니다.Most Significant Bit First 8bit 데이터 전송,CPOL=0; CPHA=0;
8266단은 다음 테스트 함수를 직접 호출하면 됩니다. 그중spislave_isr_sta는 인터럽트 리셋 함수입니다.//Test spi slave interfaces. void ICACHE_FLASH_ATTR spi_slave_test() {//SpiAttr hSpiAttr; hSpiAttr.bitOrder = SpiBitOrder_MSBFirst; hSpiAttr.speed = 0; hSpiAttr.mode = SpiMode_Slave; hSpiAttr.subMode = SpiSubMode_0;
// Init HSPI GPIO
WRITE_PERI_REG(PERIPHS_IO_MUX, 0x105);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, 2);//configure io to spi mode
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, 2);//configure io to spi mode
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, 2);//configure io to spi mode
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, 2);//configure io to spi mode

os_printf("\r
============= spi init slave =============\r
"); SPIInit(SpiNum_HSPI, &hSpiAttr); // Set spi interrupt information. SpiIntInfo spiInt; spiInt.src = (SpiIntSrc_TransDone | SpiIntSrc_WrStaDone |SpiIntSrc_RdStaDone |SpiIntSrc_WrBufDone |SpiIntSrc_RdBufDone); spiInt.isrFunc = spi_slave_isr_sta; SPIIntCfg(SpiNum_HSPI, &spiInt);

//SHOWSPIREG(SpiNum_HSPI);
SPISlaveRecvData(SpiNum_HSPI);
uint32_t sndData[8] = { 0 };
sndData[0] = 0x35343332;
sndData[1] = 0x39383736;
sndData[2] = 0x3d3c3b3a;
sndData[3] = 0x11103f3e;
sndData[4] = 0x15141312;
sndData[5] = 0x19181716;
sndData[6] = 0x1d1c1b1a;
sndData[7] = 0x21201f1e;

SPISlaveSendData(SpiNum_HSPI, sndData, 8);
WRITE_PERI_REG(SPI_RD_STATUS(SpiNum_HSPI), 0x8A);
WRITE_PERI_REG(SPI_WR_STATUS(SpiNum_HSPI), 0x83);

}
단편기 원본

좋은 웹페이지 즐겨찾기