LoginSignup
0
0

LPC812MAXでソフトウェアI2Cで遊ぶ

Last updated at Posted at 2022-09-02

x mbed2リビジョン144
x リビジョンを変更できる人むけ

目的
I2C-USART用のテスト

o_con714.jpg

o_con715.jpg

イメージです。

o_con368.jpg

資料




//soft_i2c_test_812_1

#include "mbed.h"

DigitalInOut SDA1(P0_10, PIN_OUTPUT,OpenDrain,0);
DigitalInOut SCL1(P0_11, PIN_OUTPUT,OpenDrain,0);

//A5
#define SCK_0_HIGH()  SCL1=1
#define SCK_0_LOW()   SCL1=0

//A4
#define SDA_0_HIGH()  SDA1=1
#define SDA_0_LOW()   SDA1=0

// 1000us   1kh
//  100us  10kh
//   10us 100kh
#define myDelay()  wait_us(100);


int soft_i2c(char add_p, char data_p)
{

    int ii; //カウンター

    //待ち
    SDA_0_HIGH();
    SCK_0_HIGH();
    myDelay();
    myDelay();
    myDelay();

    //START
    SDA_0_LOW();
    myDelay();
    SCK_0_LOW();
    myDelay();

    for (ii = 0; ii < 8; ii++) {
        SCK_0_LOW();
        if ( ((add_p << ii) & 0x80) == 0 ) {
            SDA_0_LOW();
        } else {
            SDA_0_HIGH();
        }//endif
        myDelay();
        SCK_0_HIGH();
        myDelay();
    }//for

    //ack
    SCK_0_LOW();
    SDA_0_HIGH();
    myDelay();
    SCK_0_HIGH();
    myDelay();
 
    for (ii = 0; ii < 8; ii++) {
        SCK_0_LOW();

        if ( ((data_p << ii) & 0x80) == 0 ) {
            SDA_0_LOW();
        } else {
            SDA_0_HIGH();
        }//endif

        myDelay();
        SCK_0_HIGH();
        myDelay();
    }//for

    //ack
    SCK_0_LOW();
    SDA_0_HIGH();
    myDelay();
    SCK_0_HIGH();
    myDelay();

    //STOP
    SCK_0_LOW();
    SDA_0_LOW();
    myDelay();
    SCK_0_HIGH();
    myDelay();
    SDA_0_HIGH();
    myDelay();

    return (0);
}//soft_i2c


//メイン関数
int main()
{

    SCL1 = 1;
    SDA1 = 1;

    //無限ループ
    while(1) {

        char *ss1 = "hello world\r\n";
        int ii=0;
        while(ss1[ii] != 0 ){
            soft_i2c(0x80, ss1[ii]);ii++;
        }//while
        
        wait_ms(1000); //1秒の待ち

    }//while

}//main





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