STM32L010でSPIを使いEEPROM AT93C46を読み出す。


x mbedのリビジョンは、125

目的
SPIのテスト

前提
事前にアドレス0に1,2が書き込まれている

参考



#include "mbed.h"

#define swclk1  PA_5    //A4
#define test01  PA_6
#define swdio1  PA_7    //A6
#define en1     PA_4    //A3

//DigitalOut test1(test01);

//DigitalOut swdclk(swclk1);
//DigitalOut swdio(swdio1);
DigitalOut cs(en1);

SPI spi( swdio1 , test01, swclk1); // mosi, miso, sclk


//SPI spi( D11 , D12 , D13); // mosi, miso, sclk
//DigitalOut cs( D10 );

//Serial pc(USBTX, USBRX); // tx, rx
//Serial pc(SERIAL_TX, SERIAL_RX); //767
RawSerial pc(PA_2, PA_3); //010

int main() {
    pc.printf("\r\n010\r\n");

    // Setup the spi for 8 bit data, high steady state clock,
    // second edge capture, with a 1MHz clock rate
    spi.format(8,0);
    spi.frequency(1000000);

    // Select the device by seting chip select low
    cs = 1;

    spi.write(0b00000001);  
    spi.write(0b10000000 | 0);         
    wait_ms(5);    

    uint8_t b1 =  spi.write(0x00);
    uint8_t b2 =  spi.write(0x00);
    uint8_t b3 =  spi.write(0x00); 

    pc.printf("番地(H) = ");
    pc.printf("%d\r\n",
        (b1 << 1) | (b2 >> 7)
    );


    pc.printf("番地(L) = ");      
    pc.printf("%d\r\n",
    ( (b2 & 0b01111111) << 1)  | (b3 >> 7)
    );

    // Deselect the device
    cs = 0;

}//main

//容量削減
void error(const char* format, ...){}