04.10.2012, 15:38
|
|
Частый гость
Регистрация: 21.07.2005
Сообщений: 29
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
|
|
|
|
05.10.2012, 01:52
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
http://www.ixbt.com/news/hard/index.shtml?16/16/87
вариантов два: или это начало конца или скоро попрут гигагерцовые stm32 ![Улыбка](images/smilies/icon_smile.gif) (шутк)
|
|
|
|
06.10.2012, 18:36
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,661
Сказал спасибо: 185
Сказали Спасибо 3,183 раз(а) в 2,063 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
люди!!!!
к сожалению вчитываться в бесконечное количество страниц не имею возможности поэтому если не сложно подскажите вот чего - установил ягурто и коиде и все вроде работает и вроде устраивает только вот не нашел там ничего кроме дебажного режима сбора поршивки.
как быть?
чем щас модно вообще стм32 кодить?
я кодил лпц1343 и 1768 но там среда была экспрессо и там таких сложностей не было но эти процы чото стали пропадать из продажи и вот пришлось на стм перейти потихоньку
Последний раз редактировалось индюк; 06.10.2012 в 18:43.
|
|
|
|
06.10.2012, 21:00
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Выбирай: IAR, Keil, Eclipse/GCC
первые два платные, но могут работать с некоторыми ограничениями. так что ставь все и пробуй по одному.
|
|
|
|
07.10.2012, 15:10
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Есть ли тут кто-нибудь, кто делал программу для чтения датчика BMP085 ? Можете поделиться кодом ? Ну и за одно свой неработающий код привожу, может кто подскажет ошибку.
Инициализация
Код:
|
#define I2C_EE I2C2
#define BMP085_W 0xEE
#define BMP085_R 0xEF
void I2C_Configuration(void)
{
I2C_InitTypeDef I2C_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE) ;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO , ENABLE);//
/* Configure I2C2 pins: PB10-›SCL and PB11-›SDA */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
I2C_DeInit(I2C_EE);
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_16_9;
I2C_InitStructure.I2C_OwnAddress1 = 1;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_ClockSpeed = 100000; /* 100kHz */
I2C_Cmd(I2C_EE, ENABLE);
I2C_Init(I2C_EE, &I2C_InitStructure);
I2C_AcknowledgeConfig(I2C_EE, ENABLE);
} |
Процедура чтения
Код:
|
uint8_t I2C_ByteRead( uint8_t I2C_HW_ADDRESS, uint8_t ReadAddr)
{
uint8_t tmp;
while(I2C_GetFlagStatus(I2C_EE, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C_EE, ENABLE);
while(!I2C_CheckEvent(I2C_EE, I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C_EE, I2C_HW_ADDRESS, BMP085_W);
GPIO_SetBits(GPIOB , GPIO_Pin_1); //LED2
while(!I2C_CheckEvent(I2C_EE, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
GPIO_SetBits(GPIOB , GPIO_Pin_0); //LED1
I2C_SendData(I2C_EE, ReadAddr);
while(!I2C_CheckEvent(I2C_EE, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_GenerateSTART(I2C_EE, ENABLE);
while(!I2C_CheckEvent(I2C_EE, I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C_EE, I2C_HW_ADDRESS, BMP085_R);
while(!I2C_CheckEvent(I2C_EE,I2C_EVENT_MASTER_BYTE _RECEIVED));
tmp=I2C_ReceiveData(I2C_EE);
I2C_AcknowledgeConfig(I2C_EE, DISABLE);
I2C_GenerateSTOP(I2C_EE, ENABLE);
return tmp;
} |
Вызов для чтения первой константы калибровочной.
Код:
|
ac1 = I2C_ByteRead(0x77,0xAA); |
В процедуре чтения вставлены "дебагеры" в виде зажигания светодиодов. LED2 загорается, а до LED1 не доходит. В цикле крутимся, после выдачи адреса slave устройства.
За пример брал чтение EEPROM откуда то с инета. Чую где-то глобально накосячил, но понять не могу...
|
|
|
|
08.10.2012, 00:27
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Скачал свежую копию библтиотеки STM32F10x_StdPeriph_Lib_V3.5.0. Заглянул в описание функции I2C_Send7bitAddress, на которой у Вас затык произошёл.
Вот она во всей красе.
Код:
|
void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction)
{
/* Check the parameters */
assert_param(IS_I2C_ALL_PERIPH(I2Cx));
assert_param(IS_I2C_DIRECTION(I2C_Direction));
/* Test on the direction to set/reset the read/write bit */
if (I2C_Direction != I2C_Direction_Transmitter)
{
/* Set the address bit0 for read */
Address |= OAR1_ADD0_Set;
}
else
{
/* Reset the address bit0 for write */
Address &= OAR1_ADD0_Reset;
}
/* Send the address */
I2Cx-›DR = Address;
} |
Во-первых, никто в ней не сдвигает 7-битный адрес устройства! Нужно двигать самому ручками. То есть
Код:
|
ac1 = I2C_ByteRead(0x77 ‹‹ 1, 0xAA); |
Во-вторых, передаваемый параметр I2C_Direction может иметь только два значения:
или I2C_Direction_Transmitter или I2C_Direction_Receiver. И в зависимости от него функция I2C_Send7bitAddress сама либо установит мл.бит в 0 либо в 1. Поэтому никакие BMP085_W и BMP085_R не нужны, их нужно заменить на библиотечные величины.
Последний раз редактировалось Yurkin2007; 08.10.2012 в 00:36.
|
|
|
|
08.10.2012, 02:41
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Кто нибудь в курсе, как отключить JTAG/SWD на камнях STM32L ?
Доку индусы писали видимо под каким то веществом: ![Улыбка](images/smilies/icon_smile.gif)
"29.4.2 Flexible SWJ-DP pin assignment
...
For more details on how to disable SWJ-DP port pins, please refer to Section 29.4.2"
|
|
|
|
08.10.2012, 14:31
|
|
Частый гость
Регистрация: 09.04.2007
Сообщений: 35
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
не работает SPI в режиме ремапа..вернее с моси данные идут а на SCK полный молчок. в чем может быть дела?
Последний раз редактировалось RingQ; 08.10.2012 в 15:02.
|
|
|
|
08.10.2012, 15:11
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Yurkin2007
|
Во-первых, никто в ней не сдвигает 7-битный адрес устройства! Нужно двигать самому ручками. То есть
Код:
|
ac1 = I2C_ByteRead(0x77 ‹‹ 1, 0xAA); |
Во-вторых, передаваемый параметр I2C_Direction может иметь только два значения:
или I2C_Direction_Transmitter или I2C_Direction_Receiver. И в зависимости от него функция I2C_Send7bitAddress сама либо установит мл.бит в 0 либо в 1. Поэтому никакие BMP085_W и BMP085_R не нужны, их нужно заменить на библиотечные величины.
|
Спасибо ! Поехал дальше
|
|
|
|
08.10.2012, 16:28
|
|
Прописка
Регистрация: 19.05.2012
Сообщений: 99
Сказал спасибо: 0
Сказали Спасибо 10 раз(а) в 8 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Цитата:
|
Кто нибудь в курсе, как отключить JTAG/SWD на камнях STM32L ?
|
как-то так:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // disable JTAG pins
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:21.
|
|