<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Kinetis MicrocontrollersのトピックRe: KL25z mbed SPI issue</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25z-mbed-SPI-issue/m-p/226437#M4552</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for responding,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using the SPI library in mbed, which has a function format where I can specify the clock speed and mode&lt;/P&gt;&lt;P&gt;&lt;A href="http://mbed.org/users/mbed_official/code/mbed-src/docs/ee96c43874d6/classmbed_1_1SPI.html" title="http://mbed.org/users/mbed_official/code/mbed-src/docs/ee96c43874d6/classmbed_1_1SPI.html"&gt;mbed-SPI Code&lt;/A&gt;&lt;/P&gt;&lt;P&gt;lines 31-36&lt;/P&gt;&lt;P&gt;&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;void&lt;/SPAN&gt; &lt;A href="http://mbed.org/users/mbed_official/code/mbed-src/docs/ee96c43874d6/classmbed_1_1SPI.html#a7627faa611c3645626b6b627755fcae7" style="color: #1b77c5; text-decoration: underline;" title="Configure the data transmission format."&gt;SPI::format&lt;/A&gt;(&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; bits, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; mode) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _bits = bits;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _mode = mode;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI::_owner = &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;NULL&lt;/SPAN&gt;; &lt;SPAN class="SH_COMMENT" style="color: #008000;"&gt;// Not that elegant, but works. rmeyer&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; aquire();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;lines 47-53&lt;/P&gt;&lt;P&gt;&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;void&lt;/SPAN&gt; SPI::aquire() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;if&lt;/SPAN&gt; (_owner != &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;this&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_format(&amp;amp;amp;_spi, _bits, _mode, &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_frequency(&amp;amp;amp;_spi, _hz);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _owner = &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;this&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the function spi_format() called in aquire() is used to set up the registers for the clock speed and SPI mode. &lt;/P&gt;&lt;P&gt;from lines 95-113 in &lt;A href="http://mbed.org/users/mbed_official/code/mbed-src/file/f9e72c209510/vendor/Freescale/KL25Z/hal/spi_api.c" title="http://mbed.org/users/mbed_official/code/mbed-src/file/f9e72c209510/vendor/Freescale/KL25Z/hal/spi_api.c"&gt;mbed-source code for spi_api.c&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;void&lt;/SPAN&gt; spi_format(spi_t *obj, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; bits, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; mode, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; slave) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;if&lt;/SPAN&gt; (bits != &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;8&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; error(&lt;SPAN class="SH_STRING" style="color: #ff0080;"&gt;"Only 8bits SPI supported"&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;if&lt;/SPAN&gt; ((mode &amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;) || (mode &amp;gt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;3&lt;/SPAN&gt;)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; error(&lt;SPAN class="SH_STRING" style="color: #ff0080;"&gt;"SPI mode unsupported"&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;uint8_t&lt;/SPAN&gt; polarity = (mode &amp;amp; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0x2&lt;/SPAN&gt;) ? &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;1&lt;/SPAN&gt; : &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;uint8_t&lt;/SPAN&gt; phase = (mode &amp;amp; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0x1&lt;/SPAN&gt;) ? &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;1&lt;/SPAN&gt; : &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;uint8_t&lt;/SPAN&gt; c1_data = ((!slave) &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;4&lt;/SPAN&gt;) | (polarity &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;3&lt;/SPAN&gt;) | (phase &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;2&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_COMMENT" style="color: #008000;"&gt;// clear MSTR, CPOL and CPHA bits&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; obj-&amp;gt;spi-&amp;gt;C1 &amp;amp;= ~(&lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0x7&lt;/SPAN&gt; &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;2&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_COMMENT" style="color: #008000;"&gt;// write new value&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; obj-&amp;gt;spi-&amp;gt;C1 |= c1_data;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This code appears to be working fine, and I have been able to properly set up SPI in mode 0 and mode 3. It just doesn't seem to work for mode 1. I typically get zeros from the chip.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is my code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;#include &lt;SPAN class="s1"&gt;"mbed.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RREG_COMMAND&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x20&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//read command&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define WREG_COMMAND&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x40&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//write command&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;SPI spi(PTC6, PTC7, PTC5);&amp;nbsp; &lt;SPAN class="s3"&gt;// mosi, miso, sclk&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;DigitalOut cs(PTD5); &lt;SPAN class="s3"&gt;//chip select&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s4"&gt;DigitalOut afe(PTD0); &lt;/SPAN&gt;//other SPI chip's chip select, set high throughout code to insure it doesn't interfere.&lt;/P&gt;&lt;P class="p4"&gt;//Serial pc(USBTX, USBRX);&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s5"&gt;#define ID_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="s5"&gt; &lt;/SPAN&gt;//register address to get ID of chip&lt;/P&gt;&lt;P class="p1"&gt;#define CONFIG1_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x01&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//config 1 address&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define CONFIG2_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x02&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//config 2 address&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define LOFF_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x03&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define CH1SET_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x04&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define CH2SET_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x05&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RLD_SENS_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x06&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define LOFF_SENS_ADDRESS&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x07&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define LOFF_STAT_ADDRESS&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x08&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RESP1_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x09&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RESP2_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x0A&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define GPIO_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x0B&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; read_register(&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; address) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; firstCommandByte = RREG_COMMAND | (address &amp;amp; &lt;SPAN class="s2"&gt;0x1F&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; secondCommandByte = &lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 1 bit: %d\n"&lt;/SPAN&gt;,firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 2 bit: %d\n"&lt;/SPAN&gt;,secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; registerVal = spi.write(&lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Result is %d\n"&lt;/SPAN&gt;,registerVal);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs&amp;nbsp; = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;return&lt;/SPAN&gt; registerVal;&lt;/P&gt;&lt;P class="p3"&gt;}&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s6"&gt;void&lt;/SPAN&gt; write_register(&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; address, &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; value) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; firstCommandByte = WREG_COMMAND | (address &amp;amp; &lt;SPAN class="s2"&gt;0x1F&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; secondCommandByte = &lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(value);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Wrote %d in %d register\n"&lt;/SPAN&gt;,value,address);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;}&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; main() {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs =&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; afe = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Setup the spi for 8 bit data, mode 1&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.format(&lt;SPAN class="s2"&gt;8&lt;/SPAN&gt;,&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.frequency(&lt;SPAN class="s2"&gt;2000000&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;while&lt;/SPAN&gt;(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; value = read_register(ID_ADDRESS);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;if&lt;/SPAN&gt; (value == &lt;SPAN class="s2"&gt;115&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"SUCCESS!"&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;else&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"%d\n"&lt;/SPAN&gt;,value);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = read_register(CONFIG1_ADDRESS);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"%d\n"&lt;/SPAN&gt;,value);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;2&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //check if it's an issue with the function&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait_ms(&lt;SPAN class="s2"&gt;1000&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; firstCommandByte = RREG_COMMAND | (&lt;SPAN class="s2"&gt;0x01&lt;/SPAN&gt; &amp;amp; &lt;SPAN class="s2"&gt;0x1F&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; secondCommandByte = &lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 1 bit: %d\n"&lt;/SPAN&gt;,firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 2 bit: %d\n"&lt;/SPAN&gt;,secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; registerVal = spi.write(&lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Result is %d\n"&lt;/SPAN&gt;,registerVal);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait_ms(&lt;SPAN class="s2"&gt;1000&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write_register(CONFIG1_ADDRESS,&lt;SPAN class="s2"&gt;0x01&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; confVal = read_register(CONFIG1_ADDRESS);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P class="p3"&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 04 Dec 2013 17:48:15 GMT</pubDate>
    <dc:creator>gchen</dc:creator>
    <dc:date>2013-12-04T17:48:15Z</dc:date>
    <item>
      <title>KL25z mbed SPI issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25z-mbed-SPI-issue/m-p/226435#M4550</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey guys,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I'm new to the KL25z, and just picked it up and started programming it with the mBed libraries. There's one bug that I noticed, that I don't know how to fix. For some reason, when I program board to enable SPI communications with CPOL = 0 and CPHA = 1, the board doesn't adjust the phase correctly. The chip I'm interfacing with is the TI ADS1292, which communicates in that mode. When I interface the chip with an Arduino, it works just fine. Any suggestions on how I can fix this problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Nov 2013 18:42:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25z-mbed-SPI-issue/m-p/226435#M4550</guid>
      <dc:creator>gchen</dc:creator>
      <dc:date>2013-11-25T18:42:09Z</dc:date>
    </item>
    <item>
      <title>Re: KL25z mbed SPI issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25z-mbed-SPI-issue/m-p/226436#M4551</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello George Chen,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;best would be to write this question on mbed directly, where we can help you much faster.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you share code,how you enable SPI with CPOL = 1 and CPHA = 1? Please, start a discussion there. Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;0xc0170&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Dec 2013 14:03:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25z-mbed-SPI-issue/m-p/226436#M4551</guid>
      <dc:creator>c0170</dc:creator>
      <dc:date>2013-12-04T14:03:25Z</dc:date>
    </item>
    <item>
      <title>Re: KL25z mbed SPI issue</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25z-mbed-SPI-issue/m-p/226437#M4552</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for responding,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm using the SPI library in mbed, which has a function format where I can specify the clock speed and mode&lt;/P&gt;&lt;P&gt;&lt;A href="http://mbed.org/users/mbed_official/code/mbed-src/docs/ee96c43874d6/classmbed_1_1SPI.html" title="http://mbed.org/users/mbed_official/code/mbed-src/docs/ee96c43874d6/classmbed_1_1SPI.html"&gt;mbed-SPI Code&lt;/A&gt;&lt;/P&gt;&lt;P&gt;lines 31-36&lt;/P&gt;&lt;P&gt;&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;void&lt;/SPAN&gt; &lt;A href="http://mbed.org/users/mbed_official/code/mbed-src/docs/ee96c43874d6/classmbed_1_1SPI.html#a7627faa611c3645626b6b627755fcae7" style="color: #1b77c5; text-decoration: underline;" title="Configure the data transmission format."&gt;SPI::format&lt;/A&gt;(&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; bits, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; mode) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _bits = bits;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _mode = mode;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI::_owner = &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;NULL&lt;/SPAN&gt;; &lt;SPAN class="SH_COMMENT" style="color: #008000;"&gt;// Not that elegant, but works. rmeyer&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; aquire();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;lines 47-53&lt;/P&gt;&lt;P&gt;&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;void&lt;/SPAN&gt; SPI::aquire() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;if&lt;/SPAN&gt; (_owner != &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;this&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_format(&amp;amp;amp;_spi, _bits, _mode, &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi_frequency(&amp;amp;amp;_spi, _hz);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _owner = &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;this&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the function spi_format() called in aquire() is used to set up the registers for the clock speed and SPI mode. &lt;/P&gt;&lt;P&gt;from lines 95-113 in &lt;A href="http://mbed.org/users/mbed_official/code/mbed-src/file/f9e72c209510/vendor/Freescale/KL25Z/hal/spi_api.c" title="http://mbed.org/users/mbed_official/code/mbed-src/file/f9e72c209510/vendor/Freescale/KL25Z/hal/spi_api.c"&gt;mbed-source code for spi_api.c&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;void&lt;/SPAN&gt; spi_format(spi_t *obj, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; bits, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; mode, &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;int&lt;/SPAN&gt; slave) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;if&lt;/SPAN&gt; (bits != &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;8&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; error(&lt;SPAN class="SH_STRING" style="color: #ff0080;"&gt;"Only 8bits SPI supported"&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;if&lt;/SPAN&gt; ((mode &amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;) || (mode &amp;gt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;3&lt;/SPAN&gt;)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; error(&lt;SPAN class="SH_STRING" style="color: #ff0080;"&gt;"SPI mode unsupported"&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;uint8_t&lt;/SPAN&gt; polarity = (mode &amp;amp; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0x2&lt;/SPAN&gt;) ? &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;1&lt;/SPAN&gt; : &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;uint8_t&lt;/SPAN&gt; phase = (mode &amp;amp; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0x1&lt;/SPAN&gt;) ? &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;1&lt;/SPAN&gt; : &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_RESERVED" style="color: #0000ff;"&gt;uint8_t&lt;/SPAN&gt; c1_data = ((!slave) &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;4&lt;/SPAN&gt;) | (polarity &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;3&lt;/SPAN&gt;) | (phase &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;2&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_COMMENT" style="color: #008000;"&gt;// clear MSTR, CPOL and CPHA bits&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; obj-&amp;gt;spi-&amp;gt;C1 &amp;amp;= ~(&lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;0x7&lt;/SPAN&gt; &amp;lt;&amp;lt; &lt;SPAN class="SH_BUILTIN" style="color: #ff0000;"&gt;2&lt;/SPAN&gt;);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="SH_COMMENT" style="color: #008000;"&gt;// write new value&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; obj-&amp;gt;spi-&amp;gt;C1 |= c1_data;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This code appears to be working fine, and I have been able to properly set up SPI in mode 0 and mode 3. It just doesn't seem to work for mode 1. I typically get zeros from the chip.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is my code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;#include &lt;SPAN class="s1"&gt;"mbed.h"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RREG_COMMAND&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x20&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//read command&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define WREG_COMMAND&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x40&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//write command&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;SPI spi(PTC6, PTC7, PTC5);&amp;nbsp; &lt;SPAN class="s3"&gt;// mosi, miso, sclk&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p3"&gt;DigitalOut cs(PTD5); &lt;SPAN class="s3"&gt;//chip select&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s4"&gt;DigitalOut afe(PTD0); &lt;/SPAN&gt;//other SPI chip's chip select, set high throughout code to insure it doesn't interfere.&lt;/P&gt;&lt;P class="p4"&gt;//Serial pc(USBTX, USBRX);&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s5"&gt;#define ID_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;&lt;SPAN class="s5"&gt; &lt;/SPAN&gt;//register address to get ID of chip&lt;/P&gt;&lt;P class="p1"&gt;#define CONFIG1_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x01&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//config 1 address&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define CONFIG2_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x02&lt;/SPAN&gt; &lt;SPAN class="s3"&gt;//config 2 address&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define LOFF_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x03&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define CH1SET_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x04&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define CH2SET_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x05&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RLD_SENS_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x06&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define LOFF_SENS_ADDRESS&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x07&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define LOFF_STAT_ADDRESS&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x08&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RESP1_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x09&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define RESP2_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x0A&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;#define GPIO_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s2"&gt;0x0B&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; read_register(&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; address) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; firstCommandByte = RREG_COMMAND | (address &amp;amp; &lt;SPAN class="s2"&gt;0x1F&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; secondCommandByte = &lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 1 bit: %d\n"&lt;/SPAN&gt;,firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 2 bit: %d\n"&lt;/SPAN&gt;,secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; registerVal = spi.write(&lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Result is %d\n"&lt;/SPAN&gt;,registerVal);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs&amp;nbsp; = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;return&lt;/SPAN&gt; registerVal;&lt;/P&gt;&lt;P class="p3"&gt;}&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s6"&gt;void&lt;/SPAN&gt; write_register(&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; address, &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; value) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; firstCommandByte = WREG_COMMAND | (address &amp;amp; &lt;SPAN class="s2"&gt;0x1F&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; secondCommandByte = &lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(value);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Wrote %d in %d register\n"&lt;/SPAN&gt;,value,address);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;}&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p2"&gt;&lt;/P&gt;&lt;P class="p3"&gt;&lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; main() {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs =&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; afe = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p4"&gt;&lt;SPAN class="s4"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Setup the spi for 8 bit data, mode 1&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.format(&lt;SPAN class="s2"&gt;8&lt;/SPAN&gt;,&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.frequency(&lt;SPAN class="s2"&gt;2000000&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;while&lt;/SPAN&gt;(&lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; value = read_register(ID_ADDRESS);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;if&lt;/SPAN&gt; (value == &lt;SPAN class="s2"&gt;115&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"SUCCESS!"&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;else&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"%d\n"&lt;/SPAN&gt;,value);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = read_register(CONFIG1_ADDRESS);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"%d\n"&lt;/SPAN&gt;,value);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait(&lt;SPAN class="s2"&gt;2&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //check if it's an issue with the function&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;0&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait_ms(&lt;SPAN class="s2"&gt;1000&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; firstCommandByte = RREG_COMMAND | (&lt;SPAN class="s2"&gt;0x01&lt;/SPAN&gt; &amp;amp; &lt;SPAN class="s2"&gt;0x1F&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; secondCommandByte = &lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 1 bit: %d\n"&lt;/SPAN&gt;,firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Sending 2 bit: %d\n"&lt;/SPAN&gt;,secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(firstCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spi.write(secondCommandByte);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; registerVal = spi.write(&lt;SPAN class="s2"&gt;0x00&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&lt;SPAN class="s1"&gt;"Result is %d\n"&lt;/SPAN&gt;,registerVal);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wait_ms(&lt;SPAN class="s2"&gt;1000&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs = &lt;SPAN class="s2"&gt;1&lt;/SPAN&gt;;&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write_register(CONFIG1_ADDRESS,&lt;SPAN class="s2"&gt;0x01&lt;/SPAN&gt;);&lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="s6"&gt;int&lt;/SPAN&gt; confVal = read_register(CONFIG1_ADDRESS);&lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P class="p3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P class="p3"&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Dec 2013 17:48:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL25z-mbed-SPI-issue/m-p/226437#M4552</guid>
      <dc:creator>gchen</dc:creator>
      <dc:date>2013-12-04T17:48:15Z</dc:date>
    </item>
  </channel>
</rss>

