0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

(高速)STM32G031でソフトウェアSPIの速度を測って遊ぶ2

Last updated at Posted at 2023-11-19

STM32G031でソフトウェアSPIの速度を測って遊ぶ2

やく1.5Mバイト秒(まちがっているかも

o_cop798.jpg




//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);

}



0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?