STM32G031でソフトウェアSPIの速度を測って遊ぶ2
やく1.5Mバイト秒(まちがっているかも
//Soft_SPI_test3_031
#define DW digitalWrite
#define TFT_MOSI PA12
#define TFT_SCK PA1
// m C
// 5432109876543210
#define REG_MOSI_ON GPIOA->ODR=0b0001000000000000;
// m C
// 5432109876543210
#define REG_CLK_ON__MOSI_1 GPIOA->ODR=0b0001000000000010;
// m C
// 5432109876543210
#define REG_MOSI_OFF GPIOA->ODR=0b0000000000000000;
// m C
// 5432109876543210
#define REG_CLK_ON__MOSI_0 GPIOA->ODR=0b0000000000000010;
// m C
// 5432109876543210
#define REG_CLK_OFF GPIOA->ODR=0b0000000000000000;
void SPI_WRITE8(int s)
{
//1
if (s & 0x80) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
//2
if (s & 0x40) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
//3
if (s & 0x20) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
//4
if (s & 0x10) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
//5
if (s & 0x08) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
//6
if (s & 0x04) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
//7
if (s & 0x02) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
//8
if (s & 0x01) {
REG_MOSI_ON;
REG_CLK_ON__MOSI_1;
REG_CLK_OFF;
} else {
REG_MOSI_OFF;
REG_CLK_ON__MOSI_0;
REG_CLK_OFF;
}//end if
}//SPI_WRITE8
void setup() {
pinMode(TFT_MOSI, OUTPUT);
pinMode(TFT_SCK , OUTPUT);
loop1:
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
SPI_WRITE8(0xF0);
goto loop1;
}
void loop() {
SPI_WRITE8(0x00);
SPI_WRITE8(0x00);
delay(2000);
SPI_WRITE8(0x00);
SPI_WRITE8(0x55);
delay(2000);
SPI_WRITE8(0x00);
SPI_WRITE8(0xaa);
delay(2000);
SPI_WRITE8(0x00);
SPI_WRITE8(0xff);
delay(2000);
}