[STM32 / MBED] MBED 통신
- HelloMaker
- 0
- 11,121
- 0
- 0
- 글주소
- 03-10
Serial
한 줄 요약 : 시리얼을 통하여 기본은 비동기로 하나의 디바이스와 통신한다.
예제 :
#include "mbed.h" Serial pc(USBTX, USBRX); // 기본 USB를 통한 TX와 RX 통신 설정 (컴퓨터와 통신하여 확인) int main() { pc.printf("Hello World!\n"); while(1) { pc.putc(pc.getc() + 1); } } |
참고 주소 : https://os.mbed.com/handbook/Serial
SPI
한 줄 요약 : SPI를 통하여 여러 디바이스와 통신한다.
Master
예제 :
#include "mbed.h" SPI spi(p5, p6, p7); // mosi, miso, sclk DigitalOut cs(p8); int main() { // Chip must be deselected cs = 1; // Setup the spi for 8 bit data, high steady state clock, // second edge capture, with a 1MHz clock rate spi.format(8,3); spi.frequency(1000000); // Select the device by seting chip select low cs = 0; // Send 0x8f, the command to read the WHOAMI register spi.write(0x8F); // Send a dummy byte to receive the contents of the WHOAMI register int whoami = spi.write(0x00); printf("WHOAMI register = 0x%X\n", whoami); // Deselect the device cs = 1; } |
참고 주소 : https://os.mbed.com/handbook/SPI
Slave
예제 :
// Reply to a SPI master as slave v = (v + 1) % 0x100; // Add one to it, modulo 256 device.reply(v); // Make this the next reply } } } |
참고 주소 : https://mbed.org/users/mbed_official/code/mbed/docs/tip/classmbed_1_1SPISlave.html
I2C
한 줄 요약 : I2C을 통하여 여러 디바이스와 통신한다.
Master
예제 :
#include "mbed.h" // Read temperature from LM75BD I2C i2c(p28, p27); const int addr = 0x90; int main() { char cmd[2]; while (1) { cmd[0] = 0x01; cmd[1] = 0x00; i2c.write(addr, cmd, 2); wait(0.5); cmd[0] = 0x00; i2c.write(addr, cmd, 1); i2c.read(addr, cmd, 2); float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0); printf("Temp = %.2f\n", tmp); } } |
참고 주소 : https://mbed.org/handbook/I2C
Slave
예제 :
// Simple I2C responder #include "mbed.h" I2CSlave slave(p9, p10); int main() { char buf[10]; char msg[] = "Slave!"; slave.address(0xA0); while (1) { int i = slave.receive(); switch (i) { case I2CSlave::ReadAddressed: slave.write(msg, strlen(msg) + 1); // Includes null char break; case I2CSlave::WriteGeneral: slave.read(buf, 10); printf("Read G: %s\n", buf); break; case I2CSlave::WriteAddressed: slave.read(buf, 10); printf("Read A: %s\n", buf); break; } for(int i = 0; i < 10; i++) buf[i] = 0; // Clear buffer } } |
참고 주소 : https://mbed.org/users/mbed_official/code/mbed/docs/tip/classmbed_1_1I2CSlave.html
CAN
한 줄 요약 : CAN을 통하여 여러 디바이스와 통신한다.
예제 :
#include "mbed.h" Ticker ticker; DigitalOut led1(LED1); DigitalOut led2(LED2); CAN can1(p9, p10); CAN can2(p30, p29); char counter = 0; void send() { printf("send()\n"); if(can1.write(CANMessage(1337, &counter, 1))) { printf("wloop()\n"); counter++; printf("Message sent: %d\n", counter); } led1 = !led1; } int main() { printf("main()\n"); ticker.attach(&send, 1); CANMessage msg; while(1) { printf("loop()\n"); if(can2.read(msg)) { printf("Message received: %d\n", msg.data[0]); led2 = !led2; } wait(0.2); } } |
참고 주소 : https://mbed.org/handbook/CAN
Ethernet
한 줄 요약 : Ethernet을 이용하여 통신한다.
예제 :
#include "mbed.h" |