Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| network_protocol_programming_lab:4_prepareppl [2020/03/23 12:23] – [Get PPL Files for BeagleBone Black] rathke | network_protocol_programming_lab:4_prepareppl [2022/04/18 17:40] (current) – fangenoorth | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Protocol Programming Lab Preparations ====== | ||
| + | ((Original Sources: http:// | ||
| + | http:// | ||
| + | |||
| + | ===== Connecting the CC1200 Evaluation Module Kit to the Beagle Bone Black ===== | ||
| + | |||
| + | The wireless Transceiver CC1200 manufactured by Texas Instruments will be normally used in conjunction with a development kit for test purposes, described later. The CC1200 Evaluation Module Kit is shown in figure 1. | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | In our setup we are connecting the same evaluation module directly to the Beagle Bone Black. | ||
| + | |||
| + | |||
| + | Now, link the connector as shown in figure 2. | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | To avoid damage of devices, the colors shown must match. Also take care of the pins. They should be firmly fixed. | ||
| + | |||
| + | ===== SPI Library ===== | ||
| + | |||
| + | The PRU controls the SPI bus and offers a software user space interface for reading and writing to and from the SPI bus. | ||
| + | |||
| + | ==== Install PRU devtools ==== | ||
| + | |||
| + | In order to build and use the SPI library we need access to the development tools for the PRU. Since these aren't available anymore in the repositories, | ||
| + | |||
| + | To do so we first have to download the sources: | ||
| + | |||
| + | <code bash> | ||
| + | cd ~ | ||
| + | git clone https:// | ||
| + | </ | ||
| + | |||
| + | Then we change directory and build the dev tools: | ||
| + | |||
| + | <code bash> | ||
| + | cd am335x_pru_package | ||
| + | make | ||
| + | </ | ||
| + | |||
| + | After the compilation is done, it's time to install them: | ||
| + | |||
| + | <code bash> | ||
| + | sudo make install | ||
| + | </ | ||
| + | |||
| + | Now we should have access to the PRU assembler //pasm// as well as the prussdrv library. | ||
| + | |||
| + | ==== Build and install the SPI library ==== | ||
| + | |||
| + | To generate the SPI library go to the //spi// directory of the Beaglebone archive. | ||
| + | |||
| + | <code bash> | ||
| + | cd ~/ | ||
| + | </ | ||
| + | |||
| + | Now execute | ||
| + | |||
| + | <code bash> | ||
| + | cmake . | ||
| + | make | ||
| + | sudo make install | ||
| + | </ | ||
| + | |||
| + | //cmake// will generate a // | ||
| + | |||
| + | In the last step run | ||
| + | |||
| + | <code bash> | ||
| + | sudo ldconfig | ||
| + | </ | ||
| + | |||
| + | to make the dynamic linker aware of the newly created SPI library. | ||
| + | |||
| + | |||
| + | ==== Test Setup ==== | ||
| + | |||
| + | To test, if everything is working fine, go to the directory | ||
| + | <code bash> | ||
| + | cd ~/ | ||
| + | </ | ||
| + | |||
| + | and enter | ||
| + | |||
| + | <code bash> | ||
| + | cmake .. | ||
| + | </ | ||
| + | |||
| + | '' | ||
| + | |||
| + | <code bash> | ||
| + | make | ||
| + | </ | ||
| + | |||
| + | This will create a binary called '' | ||
| + | The output of '' | ||
| + | |||
| + | <code bash> | ||
| + | ./ | ||
| + | |||
| + | INFO:read Adr:0x1 Val:0x7 | ||
| + | INFO: Status:IDLE | ||
| + | INFO:read adr:0xd val:0x14 | ||
| + | INFO: REG DUMP 0x00-0x2E | ||
| + | INFO: read adr:0x0 val:0x6 | ||
| + | INFO: read adr:0x1 val:0x7 | ||
| + | INFO: read adr:0x2 val:0x30 | ||
| + | INFO: read adr:0x3 val:0x3c | ||
| + | INFO: read adr:0x4 val:0x93 | ||
| + | INFO: read adr:0x5 val:0xb | ||
| + | INFO: read adr:0x6 val:0x51 | ||
| + | INFO: read adr:0x7 val:0xde | ||
| + | INFO: read adr:0x8 val:0xaa | ||
| + | INFO: read adr:0x9 val:0x3 | ||
| + | INFO: read adr:0xa val:0x6 | ||
| + | INFO: read adr:0xb val:0x3 | ||
| + | INFO: read adr:0xc val:0x4c | ||
| + | INFO: read adr:0xd val:0x14 | ||
| + | INFO: read adr:0xe val:0xda | ||
| + | INFO: read adr:0xf val:0xc4 | ||
| + | INFO: read adr:0x10 val:0x94 | ||
| + | INFO: read adr:0x11 val:0x46 | ||
| + | INFO: read adr:0x12 val:0xd | ||
| + | INFO: read adr:0x13 val:0x43 | ||
| + | INFO: read adr:0x14 val:0xa9 | ||
| + | INFO: read adr:0x15 val:0x2a | ||
| + | INFO: read adr:0x16 val:0x36 | ||
| + | INFO: read adr:0x17 val:0x0 | ||
| + | INFO: read adr:0x18 val:0x0 | ||
| + | INFO: read adr:0x19 val:0xb1 | ||
| + | INFO: read adr:0x1a val:0x20 | ||
| + | INFO: read adr:0x1b val:0x52 | ||
| + | INFO: read adr:0x1c val:0xc3 | ||
| + | INFO: read adr:0x1d val:0x80 | ||
| + | INFO: read adr:0x1e val:0x0 | ||
| + | INFO: read adr:0x1f val:0xb | ||
| + | INFO: read adr:0x20 val:0x2 | ||
| + | INFO: read adr:0x21 val:0x8 | ||
| + | INFO: read adr:0x22 val:0x21 | ||
| + | INFO: read adr:0x23 val:0x0 | ||
| + | INFO: read adr:0x24 val:0x0 | ||
| + | INFO: read adr:0x25 val:0x0 | ||
| + | INFO: read adr:0x26 val:0x4 | ||
| + | INFO: read adr:0x27 val:0x3 | ||
| + | INFO: read adr:0x28 val:0x0 | ||
| + | INFO: read adr:0x29 val:0xf | ||
| + | INFO: read adr:0x2a val:0x0 | ||
| + | INFO: read adr:0x2b val:0x7f | ||
| + | INFO: read adr:0x2c val:0x56 | ||
| + | INFO: read adr:0x2d val:0xf | ||
| + | INFO: read adr:0x2e val:0x3 | ||
| + | INFO:write adr:0x4 val:0xff | ||
| + | INFO:read adr:0x4 val:0xff | ||
| + | INFO: Status:IDLE | ||
| + | INFO: extended Register reads | ||
| + | INFO:read adr:0x0 val:0x0 | ||
| + | INFO:read adr:0x1 val:0x20 | ||
| + | INFO:read adr:0x2 val:0xb | ||
| + | INFO:read adr:0x3 val:0x0 | ||
| + | INFO:read adr:0x4 val:0x0 | ||
| + | INFO:read adr:0x5 val:0x8 | ||
| + | INFO:read adr:0x6 val:0x1 | ||
| + | INFO:read adr:0x7 val:0x0 | ||
| + | INFO:read adr:0x8 val:0x0 | ||
| + | INFO:read adr:0x9 val:0x0 | ||
| + | INFO:read adr:0xa val:0x0 | ||
| + | INFO:read adr:0xb val:0x0 | ||
| + | INFO:read adr:0xc val:0x0 | ||
| + | INFO:read adr:0xd val:0x0 | ||
| + | INFO:read adr:0xe val:0x0 | ||
| + | INFO:read adr:0xf val:0x2 | ||
| + | INFO:read adr:0x10 val:0x5a | ||
| + | INFO:read adr:0x11 val:0x1a | ||
| + | INFO:read adr:0x12 val:0x8 | ||
| + | INFO:read adr:0x13 val:0x5a | ||
| + | INFO:read adr:0x14 val:0x0 | ||
| + | INFO:read adr:0x15 val:0x20 | ||
| + | INFO:read adr:0x16 val:0x0 | ||
| + | INFO:read adr:0x17 val:0x0 | ||
| + | INFO:read adr:0x18 val:0x28 | ||
| + | INFO:read adr:0x19 val:0x1 | ||
| + | INFO:read adr:0x1a val:0x0 | ||
| + | INFO:read adr:0x1b val:0x3 | ||
| + | INFO:read adr:0x1c val:0xff | ||
| + | INFO:read adr:0x1d val:0x1f | ||
| + | INFO:read adr:0x1e val:0x0 | ||
| + | INFO:read adr:0x1f val:0x51 | ||
| + | INFO:read adr:0x20 val:0x2c | ||
| + | INFO:read adr:0x21 val:0x11 | ||
| + | INFO:read adr:0x22 val:0x0 | ||
| + | INFO:read adr:0x23 val:0x14 | ||
| + | INFO:read adr:0x24 val:0x0 | ||
| + | INFO:read adr:0x25 val:0x0 | ||
| + | INFO:read adr:0x26 val:0x0 | ||
| + | INFO:read adr:0x27 val:0x81 | ||
| + | INFO:read adr:0x28 val:0x0 | ||
| + | INFO:read adr:0x29 val:0x2 | ||
| + | INFO:read adr:0x2a val:0x0 | ||
| + | INFO:read adr:0x2b val:0x0 | ||
| + | INFO:read adr:0x2c val:0x10 | ||
| + | INFO:read adr:0x2d val:0x0 | ||
| + | INFO:read adr:0x2e val:0x0 | ||
| + | INFO:read adr:0x2f val:0x1 | ||
| + | INFO:read adr:0x2f0a val:0x0 | ||
| + | INFO:read after write 0xf0 in 0x0a adr:0x2f0a val:0xf0 | ||
| + | </ | ||
| + | |||
| + | If all of the register values are equal to zero, the SPI connection is not working, or wiring between the Beaglebone and the SPI pins is not correct or the CC1200 itself is damaged. In this case repair the broken part. | ||
