<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery? - STM32				            </title>
            <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/</link>
            <description>Обсуждение вопросов, посвященных программированию микроконтроллеров, разработке электроники и не только.</description>
            <language>ru-RU</language>
            <lastBuildDate>Thu, 11 Jun 2026 14:12:03 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2471</link>
                        <pubDate>Mon, 23 Oct 2023 12:43:54 +0000</pubDate>
                        <description><![CDATA[SPI_SR_RXNE очищался без чтения SPI1-&gt;DR в коде, потому что SPI1-&gt;DR читал дебаггер.]]></description>
                        <content:encoded><![CDATA[496
<p>SPI_SR_RXNE очищался без чтения SPI1-&gt;DR в коде, потому что SPI1-&gt;DR читал дебаггер.</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2471</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2470</link>
                        <pubDate>Sun, 22 Oct 2023 10:21:41 +0000</pubDate>
                        <description><![CDATA[Я провёл эксперимент.
SPI_SR_RXNE очищается и без чтения SPI1-&gt;DR.
Может я не прав, но по моему очищение SPI_SR_RXNE сигнализирует о переходе данных в регистр SPI1-&gt;DR.
 

SPI1-&amp;g...]]></description>
                        <content:encoded><![CDATA[<div>Я провёл эксперимент.</div>
<div>SPI_SR_RXNE очищается и без чтения SPI1-&gt;DR.</div>
<div>Может я не прав, но по моему очищение SPI_SR_RXNE сигнализирует о переходе данных в регистр SPI1-&gt;DR.</div>
<div> </div>
<div>
<pre contenteditable="false">SPI1-&gt;CR1  |= SPI_CR1_SPE; 
uint8_t address=0x8F; //Register address+read
uint8_t result;
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); //Chip Select
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
SPI1-&gt;DR = address;
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);


while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
//result=SPI1-&gt;DR;  //ДЕАКТИВИРОВАНО.</pre>
</div>
<div> </div>
<div>---------------------------------------------------------------</div>
<div> </div>
<div>
<pre contenteditable="false">SPI1-&gt;CR1  |= SPI_CR1_SPE; 
uint8_t address=0x8F; //Register address+read
uint8_t result;
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); //Chip Select
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
SPI1-&gt;DR = address;
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);


while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;  //АКТИВИРОВАНО.</pre>
</div>
<div>-------------------------------------------------------------</div>
<div>В обоих случаях SPI_SR_RXNE очищен</div>
<div>
495
<p>Со вторым result=SPI1-&gt;DR; который дальше по коду это же делал, результат тот же.</p>
</div>
<div> </div>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2470</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2469</link>
                        <pubDate>Sat, 21 Oct 2023 15:41:45 +0000</pubDate>
                        <description><![CDATA[SPI_SR_RXNE очищается при чтении SPI1-&gt;DR?Мне казалось, что просто при переходе данных в регистр DR очищается SPI_SR_RXNE .Мне сложно представить, что SPI1-&gt;DR следит, когда его читают...]]></description>
                        <content:encoded><![CDATA[<p>SPI_SR_RXNE очищается при чтении SPI1-&gt;DR?<br />Мне казалось, что просто при переходе данных в регистр DR очищается SPI_SR_RXNE .<br />Мне сложно представить, что SPI1-&gt;DR следит, когда его читают.<br />Например это</p>
<pre contenteditable="false">result=SPI1-&gt;DR;</pre>
<p><br />Прям SPI1-&gt;DR следит, что значение перешло в переменную result?</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2469</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2468</link>
                        <pubDate>Sat, 21 Oct 2023 14:50:35 +0000</pubDate>
                        <description><![CDATA[SPI_SR_RXNE принимает значение 0, когда данные переходят из RX буфера в регистр SPI1-&gt;DRПоэтому я применил данную логику.
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;
wh...]]></description>
                        <content:encoded><![CDATA[<p>SPI_SR_RXNE принимает значение 0, когда данные переходят из RX буфера в регистр SPI1-&gt;DR<br />Поэтому я применил данную логику.</p>
<pre contenteditable="false">while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);</pre>
<p>И эти данные уже можно забирать из регистра SPI1-&gt;DR, когда SPI_SR_RXNE находится в нуле</p>
<p>Правда после</p>
<pre contenteditable="false">result=SPI1-&gt;DR;</pre>
<p><br />строка</p>
<pre contenteditable="false">while((SPI1-&gt;SR &amp; SPI_SR_RXNE));</pre>
<p>кажется бесполезна.</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2468</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2467</link>
                        <pubDate>Sat, 21 Oct 2023 14:39:27 +0000</pubDate>
                        <description><![CDATA[Мне казалось, что SPI_SR_RXNE принимает значение 1, когда RX буфер заполнен.Регистр SPI1-&gt;DR; это ведь не RX буфер.А здесь проверяется, когда заполнен буфер, а читается регистр SPI1-&gt;D...]]></description>
                        <content:encoded><![CDATA[<p>Мне казалось, что SPI_SR_RXNE принимает значение 1, когда RX буфер заполнен.<br />Регистр SPI1-&gt;DR; это ведь не RX буфер.<br />А здесь проверяется, когда заполнен буфер, а читается регистр SPI1-&gt;DR</p>
<pre contenteditable="false">while(!(SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;</pre>
<p>Может я узнаю, что RX буфер полный</p>
<pre contenteditable="false">while(!(SPI1-&gt;SR &amp; SPI_SR_RXNE));</pre>
<p>начну читать регистр SPI1-&gt;DR</p>
<pre contenteditable="false">result=SPI1-&gt;DR;</pre>
<p>а значение еще не перешло в регистр SPI1-&gt;DR из RX буфера.</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2467</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2466</link>
                        <pubDate>Sat, 21 Oct 2023 14:24:34 +0000</pubDate>
                        <description><![CDATA[Значит эта часть кода у меня неправильная?
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RES...]]></description>
                        <content:encoded><![CDATA[<p>Значит эта часть кода у меня неправильная?</p>
<pre contenteditable="false">while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);</pre>
<p>Надо так?</p>
<pre contenteditable="false">while(!(SPI1-&gt;SR &amp; SPI_SR_RXNE)); //Ждём когда буфер заполнится, потом читаем его
result=SPI1-&gt;DR;
while(SPI1-&gt;SR &amp; SPI_SR_RXNE); //Ждём, если буфер ещё полный. Ждём завершениетранспортировки данных.
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);</pre>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2466</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2465</link>
                        <pubDate>Sat, 21 Oct 2023 07:16:02 +0000</pubDate>
                        <description><![CDATA[Еще бы в целом надо добавить таймаут ожидания флагов, чтобы в случае, если флаг не выставился по какой-то причине, программа намертво там не встряла.]]></description>
                        <content:encoded><![CDATA[<p>Еще бы в целом надо добавить таймаут ожидания флагов, чтобы в случае, если флаг не выставился по какой-то причине, программа намертво там не встряла.</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2465</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2464</link>
                        <pubDate>Sat, 21 Oct 2023 07:14:40 +0000</pubDate>
                        <description><![CDATA[От: @stm 
while(!(SPI1-&gt;SR &amp; SPI_SR_RXNE));
Пока SR &amp; SPI_SR_RXNE пустой, надо ждать.Не наоборот надо?Пока SR &amp; SPI_SR_RXNE полный, надо ждать, когда освободится, то заполня...]]></description>
                        <content:encoded><![CDATA[<blockquote data-userid="2079" data-postid="2461" data-mention="stm">
<div class="wpforo-post-quote-author"><strong> От: @stm </strong></div>
<pre contenteditable="false">while(!(SPI1-&gt;SR &amp; SPI_SR_RXNE));</pre>
<p>Пока SR &amp; SPI_SR_RXNE пустой, надо ждать.<br />Не наоборот надо?<br />Пока SR &amp; SPI_SR_RXNE полный, надо ждать, когда освободится, то заполнять его.<br />0: Rx buffer empty<br />1: Rx buffer not empty</p>
</blockquote>
<p>Это приемный буфер, его заполняет внешнее устройство. Ждем пока буфер пустой, когда туда что-то приходит - считываем пришедшее значение.</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2464</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2462</link>
                        <pubDate>Sat, 21 Oct 2023 00:48:07 +0000</pubDate>
                        <description><![CDATA[Рабочий код. SPI_CR1_SPE у меня не был активирован.
 

SPI1-&gt;CR1  |= SPI_CR1_SPE; 
uint8_t address=0x8F; //Register address+read
uint8_t result;
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3,...]]></description>
                        <content:encoded><![CDATA[<div>Рабочий код. SPI_CR1_SPE у меня не был активирован.</div>
<div> </div>
<div>
<pre contenteditable="false">SPI1-&gt;CR1  |= SPI_CR1_SPE; 
uint8_t address=0x8F; //Register address+read
uint8_t result;
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); //Chip Select
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
SPI1-&gt;DR = address;
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);
	
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);
	
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
SPI1-&gt;DR = 0;
while(!(SPI1-&gt;SR &amp; SPI_SR_TXE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);

while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
result=SPI1-&gt;DR;
while((SPI1-&gt;SR &amp; SPI_SR_RXNE));
while((SPI1-&gt;SR &amp; SPI_SR_BSY) != RESET);

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); //Chip Select</pre>
</div>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2462</guid>
                    </item>
				                    <item>
                        <title>НА: Как при помощи CMSIS получить адрес WHO_AM_I с акселерометра LIS3DSH, который находится на STM32F407 Discovery?</title>
                        <link>https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2461</link>
                        <pubDate>Sat, 21 Oct 2023 00:25:29 +0000</pubDate>
                        <description><![CDATA[while(!(SPI1-&gt;SR &amp; SPI_SR_RXNE));
Пока SR &amp; SPI_SR_RXNE пустой, надо ждать.Не наоборот надо?Пока SR &amp; SPI_SR_RXNE полный, надо ждать, когда освободится, то заполнять его.0: R...]]></description>
                        <content:encoded><![CDATA[<pre contenteditable="false">while(!(SPI1-&gt;SR &amp; SPI_SR_RXNE));</pre>
<p>Пока SR &amp; SPI_SR_RXNE пустой, надо ждать.<br />Не наоборот надо?<br />Пока SR &amp; SPI_SR_RXNE полный, надо ждать, когда освободится, то заполнять его.<br />0: Rx buffer empty<br />1: Rx buffer not empty</p>
<p>У TXE бита наоборот<br />0: Tx buffer not empty<br />1: Tx buffer empty</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>stm</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/kak-pri-pomoshhi-cmsis-poluchit-adres-who_am_i-s-akselerometra-lis3dsh-kotoryj-nahoditsya-na-stm32f407-discovery/#post-2461</guid>
                    </item>
							        </channel>
        </rss>
		