====== Protocol Programming Lab Preparations ====== ((Original Sources: http://www.weigu.lu/sb-computer/bbb_device_tree/index.html, https://groups.google.com/forum/#!topic/beagleboard/Vnk6XbIiB9Q, http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#Adding_bb.org-overlays_to_jessie_console_image, http://elinux.org/Beagleboard:BeagleBone_Debian_Image_Migration)) ===== 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. {{:network_protocol_programming_lab:CC1200_Evaluation_Module_Kit.jpg}} 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. {{:network_protocol_programming_lab:2019-04-11 08.32.02.jpg}} 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, we have to compile and install them on our own. To do so we first have to download the sources: cd ~ git clone https://github.com/beagleboard/am335x_pru_package.git Then we change directory and build the dev tools: cd am335x_pru_package make After the compilation is done, it's time to install them: 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. cd ~/Beaglebone/spi Now execute cmake . make sudo make install //cmake// will generate a //makefile//. Then make will produce the library and make install will install the library under ///usr/local/lib//. A header file will be stored under ///usr/local/include//. In the last step run 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 cd ~/Beaglebone/SPI_test/built/ and enter cmake .. ''cmake'' will output a ''Makefile''. Execute it by entering: make This will create a binary called ''SPIv1_test''. The output of ''SPIv1_test'' will look like the following ./SPIv1_test 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.