30.05.2014, 20:55
|
|
Временная регистрация
Регистрация: 05.05.2013
Сообщений: 75
Сказал спасибо: 20
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
SAM4 - Настройка портов и SMC
Добрый день.
Имеется контроллер ATSAM4C08(ARM Cortex M4) в минимальной обвязке. С Blink-ами разобрался, хочу задействовать SMC(Static Memory Controller) контроллер внешней шины (EBI).
Мучаюсь с документацией уже третий день - ничего не работает. Я взял один пин шины данных D0 и посылаю на адрес внешней памяти числа, а на порту ничего нет.
Код:
|
#include "sam.h"
/**
* \brief Application entry point.
*
* \return Unused (ANSI-C compatibility).
*/
uint8_t* ebi = (uint8_t*)0x03000000; //Адрес внешнего устройства CS0
#define SMC ((Smc *)0x400E0000U) //Баг AtmelStudio. SMC есть в подсказках, но не объявлен.
int main(void)
{
/* Initialize the SAM system */
SystemInit();
PMC-›PMC_WPMR = 0x504D43; //Ключ для PMC контроллера
PMC-›CKGR_MOR = CKGR_MOR_MOSCXTEN; //Внешний кварц
PMC-›CKGR_PLLAR = CKGR_PLLAR_MULA(254) | CKGR_PLLAR_PLLAEN(1); //PLLA умножаем частоту на 254. (частота берется с кварца)
PMC-›CKGR_PLLBR = CKGR_PLLBR_MULB(28) | CKGR_PLLBR_DIVB(1) | CKGR_PLLBR_SRCB_PLLA_IN_PLLB; //PLLB умножаем частоту на 28. (частоту берем с PLLa)
PMC-›PMC_MCKR = PMC_PCK_CSS_PLLB_CLK | PMC_PCK_PRES_CLK_1; //Master clock = PLLB
PMC-›PMC_PCER0 = PMC_PCER0_PID10; //Подаем питание на SMC контроллер
PIOB-›PIO_WPMR = 0x50494F; //Ключ для контроллера I/O
PIOB-›PIO_OER = PIO_OER_P6; //6 пин - выход. (DATAPIN0 для SMC)
PIOB-›PIO_ABCDSR[0] &= (~PIO_ABCDSR_P6 & PIOB-›PIO_ABCDSR[0]); //Мультиплексирование пина на "C" функцию...
PIOB-›PIO_ABCDSR[1] = (PIO_ABCDSR_P6 | PIOB-›PIO_ABCDSR[1]); //...(не знаю как описать. Есть четыре положения пина A, B, C, D. SMC контроллер занимает C.)
SMC-›SMC_WPMR = 0x534D43; //Ключ для SMC
SMC-›SMC_CS_NUMBER[0].SMC_MODE = SMC_MODE_DBW_8_BIT | SMC_MODE_EXNW_MODE_DISABLED; //Настройки
SMC-›SMC_CS_NUMBER[0].SMC_CYCLE = SMC_CYCLE_NRD_CYCLE(1) | SMC_CYCLE_NWE_CYCLE(1);
SMC-›SMC_CS_NUMBER[0].SMC_PULSE = SMC_PULSE_NCS_RD_PULSE(0) | SMC_PULSE_NCS_WR_PULSE(0) | SMC_PULSE_NRD_PULSE(1) | SMC_PULSE_NWE_PULSE(1);
SMC-›SMC_CS_NUMBER[0].SMC_SETUP = SMC_SETUP_NCS_RD_SETUP(0) | SMC_SETUP_NCS_WR_SETUP(0) | SMC_SETUP_NRD_SETUP(1) | SMC_SETUP_NWE_SETUP(1);
while (1)
{
ebi[0] = 255; //Пишем в ячейку 0 - 255. По идее, вся шина данных должна быть в лог.единицах.
}
} |
SMC запустил, порт настроил, шлю адрес на "EBI Device CS0", а результат никакой. Если кто-нибудь работал с подобным, подскажите: в чем дело, куда копать?
Заранее спасибо.
PS: Пишу в Atmel Studio.
|
|
|
|
30.05.2014, 21:25
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
чисто из любопытства глянул - а cmsis для атмела не существует? или я не догоняю
еще вопрос (как всегда) - а где вы разрешаете запись наружу?
|
|
|
|
30.05.2014, 22:18
|
|
Временная регистрация
Регистрация: 05.05.2013
Сообщений: 75
Сказал спасибо: 20
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
Сообщение от Hives
|
чисто из любопытства глянул - а cmsis для атмела не существует? или я не догоняю
еще вопрос (как всегда) - а где вы разрешаете запись наружу?
|
Простите за мои скудные познания, а CMSIS это что? В Atmel объявлена куча define-ов и структур для удобной работы (которые есть в коде), это оно?
Насчет записи, единственное, где ее можно включить (для SMC контроллера):
Код:
|
SMC-›SMC_CS_NUMBER[0].SMC_MODE = SMC_MODE_WRITE_MODE; |
Но она должна быть включена по-дэфолту. Все же пробовал с ней и без нее - та же проблема.
Последний раз редактировалось JerryI; 30.05.2014 в 22:18.
Причина: SMC
|
|
|
|
31.05.2014, 09:31
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,992
Сказал спасибо: 929
Сказали Спасибо 2,259 раз(а) в 1,557 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
Сообщение от JerryI
|
а CMSIS это что?
|
Cortex Microcontroller Software Interface Standard
http://www.arm.com/products/processo...e-standard.php
__________________
Осторожно , злой кот
|
|
|
|
31.05.2014, 10:14
|
|
Временная регистрация
Регистрация: 05.05.2013
Сообщений: 75
Сказал спасибо: 20
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
Сообщение от dosikus
|
CMSIS
|
Да, эта штука уже прикручена к Atmel Studio, но как работать с SMC контроллером (в примерах) там информации по-прежнему нет.
|
|
|
|
31.05.2014, 10:36
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,992
Сказал спасибо: 929
Сказали Спасибо 2,259 раз(а) в 1,557 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
JerryI, Естесно , для этого есть либы с примерами от вендора .
CMSIS это в основном ядро и хэдеры с описанием регистров периферии от вендора.
На сайте ATMEL я вижу только SAM4S Software Package .
Оно ли это - ХЗ .
Если стоит Keil, то все просто - в Pack Installer качаешь пак SAM4_DFP .
Там будет все что нужно, и доки и либы...
Вай , наврал . Там нет либ .
Ищи на сайте ATMEL , только сдается мне там все еще сырое и кривое .
В чем смысл юзать кривые ARM'ы от AVR ????
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 31.05.2014 в 10:43.
|
|
|
|
31.05.2014, 11:15
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
ARM'ы от AVR
даже звучит неприлично
|
|
|
|
31.05.2014, 11:29
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,992
Сказал спасибо: 929
Сказали Спасибо 2,259 раз(а) в 1,557 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
Сообщение от JerryI
|
но как работать с SMC контроллером (в примерах) там информации по-прежнему нет.
|
Зато есть в том же даташите,
параграф 27. Static Memory Controller (SMC)
Со схемами и таймингами ...
__________________
Осторожно , злой кот
|
|
|
|
31.05.2014, 11:53
|
|
Временная регистрация
Регистрация: 05.05.2013
Сообщений: 75
Сказал спасибо: 20
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
Сообщение от dosikus
|
Зато есть в том же даташите,
параграф 27. Static Memory Controller (SMC)
Со схемами и таймингами ...
|
Это я уже смотрел. Там много условностей: мол, эта штука работает, если другая штука включена, а другая штука будет работать только когда третья штука переведена в режим первой штуки, но вообще ничего не будет работать если четвертая штука работает, а вторая не работает...
Хотелось бы полноценный пример использования или просто кусок кода. Причем таковые примеры имеются, но только для самого ядра, а не периферии.
Что ж, буду разбираться.
|
|
|
|
31.05.2014, 12:27
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: SAM4 - Настройка портов и SMC.
банальный совет - в гугле поиском по слову "SMC_MODE_WRITE_MODE" (и подобным) вываливается ооочень много исходников с "кусками кода", бери и копипасть.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:47.
|
|