1 | #include <asf.h>
|
2 |
|
3 |
|
4 | #define I2C_BUS1_ADDR_U5 0b1111001
|
5 |
|
6 | int main (void)
|
7 | {
|
8 | // Initialisierungen
|
9 | MATRIX->CCFG_SYSIO |= (1 << 4) | (1 << 5);
|
10 | board_init();
|
11 | sysclk_init();
|
12 | delay_init(sysclk_get_cpu_hz());
|
13 |
|
14 | pio_set_peripheral(PIOB,PIO_PERIPH_A,PIO_PB5);
|
15 | pio_set_peripheral(PIOB,PIO_PERIPH_A,PIO_PB4);
|
16 | pio_set_output(PIOA, PIO_PA31, LOW, DISABLE, ENABLE);
|
17 | pio_clear(PIOA,PIO_PA31);
|
18 |
|
19 | pmc_enable_periph_clk(ID_PIOA);
|
20 | pmc_enable_periph_clk(ID_TWI1);
|
21 |
|
22 | twi_master_options_t opt = {
|
23 | .speed = 100000,
|
24 | .chip = I2C_BUS1_ADDR_U5,
|
25 | //.smbus = 0,
|
26 | .master_clk = sysclk_get_peripheral_bus_hz(TWI1)
|
27 | };
|
28 | twi_master_setup(TWI1, &opt);
|
29 | //twi_disable_highspeed(TWI1);
|
30 | twi_master_enable(TWI1);
|
31 |
|
32 | uint8_t data_received[2];
|
33 |
|
34 | twi_package_t packet_read = {
|
35 | .addr = {0b10101101}, // TWI slave memory address data
|
36 | .addr_length = 1, // TWI slave memory address data size
|
37 | .chip = {0b1000000}, // TWI slave bus address
|
38 | .buffer = data_received, // transfer data destination buffer
|
39 | .length = 2 // transfer data size (bytes)
|
40 | };
|
41 | // Perform a multi-byte read access then check the result.
|
42 |
|
43 | const uint8_t test_pattern[] = {0b11100011};
|
44 | twi_package_t packet_write = {
|
45 | .addr = {0}, // TWI slave memory address data
|
46 | .addr_length = 0, // TWI slave memory address data size
|
47 | .chip = {0b1000000}, // TWI slave bus address
|
48 | .buffer = (void *)test_pattern, // transfer data source buffer
|
49 | .length = 1 // transfer data size (bytes)
|
50 | };
|
51 |
|
52 | while(1){
|
53 | pio_set(PIOA, PIO_PA31);
|
54 | delay_us(1);
|
55 | pio_clear(PIOA, PIO_PA31);
|
56 | twi_master_write(TWI1, &packet_write);
|
57 | delay_us(20);
|
58 | twi_master_read(TWI1, &packet_read);
|
59 | delay_ms(10);
|
60 | //twi_master_read(TWI1, &packet_read);
|
61 |
|
62 |
|
63 | }
|
64 |
|
65 | }
|