<?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>LPC MicrocontrollersのトピックSmart card interface. Changing OSR(/etu/clk-per-bit) after PPS.</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Smart-card-interface-Changing-OSR-etu-clk-per-bit-after-PPS/m-p/522446#M5082</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by kabikov on Fri May 30 08:10:26 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm developing smart card reader with lpc11u14. Now I'm trying to change speed of sc interface. After sending&amp;amp;recieving PPS I'm try to change USART parametrs. When I stay with F/D = 372 (example PPS1=0x32 : 8MHz, F = 744, D = 2) and warm reset after it it's all ok. But when I try to use some F/D other then 372 (PPS1=0x94 for example 5MHz, F = 512, D = &lt;SPAN class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;&lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":smiling_face_with_sunglasses:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; with reset I got strange ATR like "E0 E0 FF FF E0 E0 00 FF E0 00 1F 00 00 00 00 00 FC 00". I look at signals with logic analyzer between sc and lpc and it seems good ATR after reset.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* All PPS is successful&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Card is support this bitrate by documentation too&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Code for programing USART:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* If it's not restarting after PPS there is no reaction on any command&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#define _BV(_x_) (1UL &amp;lt;&amp;lt; (_x_))
void SetupSmartcardInterface(uint32_t f_max, uint32_t clock_in_etu, uint32_t etu_divider, int databits,
int parity, int guardbits, int retries) {
system_clock_divider = (SystemCoreClock + f_max - 1) / f_max;
OSR = clock_in_etu / etu_divider;

temp = _BV(3) | (0x1UL &amp;lt;&amp;lt; 4) | (databits - 1) &amp;amp; 0x3;
LPC_USART-&amp;gt;LCR = temp | _BV(7);// databits&amp;amp;parity
LPC_USART-&amp;gt;DLM = (system_clock_divider &amp;gt;&amp;gt; 8) &amp;amp; 0xff; // Fmax(Hi)
LPC_USART-&amp;gt;DLL = system_clock_divider &amp;amp; 0xff; // Fmax(Low)
LPC_USART-&amp;gt;FDR = (DivAddVal &amp;amp; 0x0F) | ((MulVal &amp;amp; 0x0F) &amp;lt;&amp;lt; 4);// Fmax(Low)
LPC_USART-&amp;gt;OSR = (OSR - 1) &amp;lt;&amp;lt; 4; // Supesampling - Fi
LPC_USART-&amp;gt;LCR &amp;amp;= ~(1 &amp;lt;&amp;lt; 7); /* DLAB = 0 */
LPC_USART-&amp;gt;FCR = 0x07; /* Enable and reset TX and RX FIFO. */
LPC_USART-&amp;gt;SCICTRL &amp;amp;= ~((0xffUL &amp;lt;&amp;lt; 8) | (0x3UL &amp;lt;&amp;lt; 5)); /* clear guard bits and retries */
LPC_USART-&amp;gt;SCICTRL |= ((guardbits &amp;amp; 0xff) &amp;lt;&amp;lt; 8) | /* guard bits */
((retries &amp;amp; 0x7) &amp;lt;&amp;lt; 5); /* retries */
LPC_USART-&amp;gt;IER = IER_RBR | IER_RLS; /* Enable UART interrupt */
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What I missed?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 16:40:46 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T16:40:46Z</dc:date>
    <item>
      <title>Smart card interface. Changing OSR(/etu/clk-per-bit) after PPS.</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Smart-card-interface-Changing-OSR-etu-clk-per-bit-after-PPS/m-p/522446#M5082</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by kabikov on Fri May 30 08:10:26 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm developing smart card reader with lpc11u14. Now I'm trying to change speed of sc interface. After sending&amp;amp;recieving PPS I'm try to change USART parametrs. When I stay with F/D = 372 (example PPS1=0x32 : 8MHz, F = 744, D = 2) and warm reset after it it's all ok. But when I try to use some F/D other then 372 (PPS1=0x94 for example 5MHz, F = 512, D = &lt;SPAN class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;&lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":smiling_face_with_sunglasses:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; with reset I got strange ATR like "E0 E0 FF FF E0 E0 00 FF E0 00 1F 00 00 00 00 00 FC 00". I look at signals with logic analyzer between sc and lpc and it seems good ATR after reset.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* All PPS is successful&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Card is support this bitrate by documentation too&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Code for programing USART:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* If it's not restarting after PPS there is no reaction on any command&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#define _BV(_x_) (1UL &amp;lt;&amp;lt; (_x_))
void SetupSmartcardInterface(uint32_t f_max, uint32_t clock_in_etu, uint32_t etu_divider, int databits,
int parity, int guardbits, int retries) {
system_clock_divider = (SystemCoreClock + f_max - 1) / f_max;
OSR = clock_in_etu / etu_divider;

temp = _BV(3) | (0x1UL &amp;lt;&amp;lt; 4) | (databits - 1) &amp;amp; 0x3;
LPC_USART-&amp;gt;LCR = temp | _BV(7);// databits&amp;amp;parity
LPC_USART-&amp;gt;DLM = (system_clock_divider &amp;gt;&amp;gt; 8) &amp;amp; 0xff; // Fmax(Hi)
LPC_USART-&amp;gt;DLL = system_clock_divider &amp;amp; 0xff; // Fmax(Low)
LPC_USART-&amp;gt;FDR = (DivAddVal &amp;amp; 0x0F) | ((MulVal &amp;amp; 0x0F) &amp;lt;&amp;lt; 4);// Fmax(Low)
LPC_USART-&amp;gt;OSR = (OSR - 1) &amp;lt;&amp;lt; 4; // Supesampling - Fi
LPC_USART-&amp;gt;LCR &amp;amp;= ~(1 &amp;lt;&amp;lt; 7); /* DLAB = 0 */
LPC_USART-&amp;gt;FCR = 0x07; /* Enable and reset TX and RX FIFO. */
LPC_USART-&amp;gt;SCICTRL &amp;amp;= ~((0xffUL &amp;lt;&amp;lt; 8) | (0x3UL &amp;lt;&amp;lt; 5)); /* clear guard bits and retries */
LPC_USART-&amp;gt;SCICTRL |= ((guardbits &amp;amp; 0xff) &amp;lt;&amp;lt; 8) | /* guard bits */
((retries &amp;amp; 0x7) &amp;lt;&amp;lt; 5); /* retries */
LPC_USART-&amp;gt;IER = IER_RBR | IER_RLS; /* Enable UART interrupt */
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What I missed?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:40:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Smart-card-interface-Changing-OSR-etu-clk-per-bit-after-PPS/m-p/522446#M5082</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:40:46Z</dc:date>
    </item>
  </channel>
</rss>

