<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=46&amp;t=3704&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-07-30T18:15:05+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=3704&amp;mode</id>
<entry>
<author><name><![CDATA[Badman]]></name></author>
<updated>2013-07-30T18:15:05+01:00</updated>
<published>2013-07-30T18:15:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3704&amp;p=43903#p43903</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3704&amp;p=43903#p43903"/>
<title type="html"><![CDATA[Uruchomienie SPI LPC 1114 w CoIde]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3704&amp;p=43903#p43903"><![CDATA[
Witam<br /><br />Walczę od jakiegoś czasu z uruchomieniem transmisji SPI w mikrokontrolerze LPC 1114 w środowisku programistycznym CoIDE. Nie mogę wysłać danych przez SPI.<br />Mój kod wygląda następująco;<br />[syntax=c]static void spi_init(void)<br />{<br />SSP_CFG_Type cfg;<br />uint8_t data = 0x55;<br /><br />cfg.CPHA = SSP_CPHA_FIRST;<br /><br />cfg.CPOL = SSP_CPOL_LO; // zmienic !<br /><br />cfg.ClockRate = 125000;<br /><br />cfg.Databit = SSP_DATABIT_8;<br /><br />cfg.Mode = SSP_MASTER_MODE;<br /><br />cfg.FrameFormat = SSP_FRAME_SPI;<br /><br />        SYSCON_AHBPeriphClockCmd ( SYSCON_AHBPeriph_SSP1, ENABLE );<br /><br />SSP_SSP1PinsInit( ENABLE );<br /><br />SSP_Init (LPC_SSP1 &amp;cfg);<br /><br />SSP_Cmd(LPC_SSP1, ENABLE);<br /><br /><br />SSP_SendData ( LPC_SSP1, data );<br />}[/syntax]<br /><br />Co mi brakuje, bądź co jest nie tak że na SCK i MOSI brak zmiany stanów ?<br /><br />BTW. Kontroler SP1 na pewno sprawny sprawdzałem w środowisku uVision.<br /><br /><br />Udało mi się uruchomić w końcu transmisje po SPI. Odpuściłem sobie funkcje na wyposażeniu CoIde zawarte w lpc11xx_ssp.c, poniżej moja funkcja (może się komuś przyda) inicjująca kontroler SPI. Okazało się, że funkcja spi_init nie zadziała jeżeli będzie &quot;standardowy&quot; wygenerowany przez CoIde plik system_LPC11xx.c, skopiowałem go z działającego projektu z uVision i ruszyło.<br /><br />[syntax=c]static void spi_init(void)<br />{<br />        uint8_t i, Dummy;<br /><br />LPC_SYSCON-&gt;PRESETCTRL |= (0x1&lt;&lt;2); // wylaczenie resetu SPP1<br />LPC_SYSCON-&gt;SSP1CLKDIV = 0x02;/* Divided by 2 */<br /><br />/*  SSP I/O config */<br />LPC_IOCON-&gt;PIO2_2 &amp;= ~0x07;<br />LPC_IOCON-&gt;PIO2_2 |= 0x02;/* SSP MISO */<br />LPC_IOCON-&gt;PIO2_3 &amp;= ~0x07;<br />LPC_IOCON-&gt;PIO2_3 |= 0x02;/* SSP MOSI */<br />LPC_IOCON-&gt;PIO2_1 &amp;= ~0x07;<br />LPC_IOCON-&gt;PIO2_1 |= 0x02;/* SSP CLK */<br /><br />LPC_SYSCON-&gt;SYSAHBCLKCTRL |= (1&lt;&lt;6); //wlaczenie zegarara dla GPIO<br /><br /><br />LPC_IOCON-&gt;PIO2_0 &amp;= ~0x07;/* SSP SSEL is a GPIO pin */<br />/* port2, bit 0 is set to GPIO output and high */<br />GPIO_SetDir( PORT2, 0, 1 );<br />GPIO_SetBits( PORT2, GPIO_Pin_0 );<br /><br />// konfiguracja SPI<br />/* Set DSS data to 8-bit, Frame format SPI, CPOL = 0, CPHA = 0, and SCR is 15 */<br />LPC_SSP1-&gt;CR0 = 0x0707;<br /><br />/* SSPCPSR clock prescale register, master mode, minimum divisor is 0x02 */<br />LPC_SSP1-&gt;CPSR = 0x2;<br /><br />uint8_t i, Dummy;<br /><br />for ( i = 0; i &lt; FIFOSIZE; i++ )<br />{<br />Dummy = LPC_SSP1-&gt;DR;/* clear the RxFIFO */<br />}<br /><br />/* Master mode */<br />LPC_SSP1-&gt;CR1 = SSPCR1_SSE;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=916">Badman</a> — 30 lip 2013, o 18:15</p><hr />
]]></content>
</entry>
</feed>