|
вопрос по инициализации Cirrus EP9307 |
|
|
|
Mar 3 2009, 12:12
|
Участник

Группа: Новичок
Сообщений: 47
Регистрация: 5-05-05
Пользователь №: 4 763

|
Нужна помощь по инициализации этого процессора. Я не очень знаком с архитектурой ARM, но есть задача, в которой к данному процу подключены две флешки (Intel J3), для организации 32 разрядной флеш-памяти. У меня есть исходники инициализации от платы EDB9315, но там стоит одна 16-рязрядная флешка. в исходниках есть код для чтения 32 разрядной флешки(это определяется по 7 биту в регистре SysCfg 0x8093009C) куда бит ставится кодом начального загрузчика(он там проверяет куда память подключена, и обнаружив ее, в 32 режиме, ставит этот бит). функция чтения флешки(ее кода производителя и типа девайса), проверяет этот бит и работает с флешкой либо 32 рязрядныи способом, либо 16-ти. Читаю при это я довольно странные данные. Тип девайса вроде верный - 18H, но тип флешки - 89H(Intel), тогда как производитель - Micron(должно быть вроде 2сH). Также похоже есть проблема с реальной шириной шины для этой пары флешек. Она похоже 16 разрядная(есть предположение). Вопрос тут такой. Нужно ли каким-то образом задавать при инициализации проца ширину шины для флешки(она сидит на CS6), или она (как видно по коду, что я имею) просто определяется по, фактически, ширине шины SDRAM???(чип селект 0). Сразу предупреждаю, что схему разрабатывал не я, я не электронщик, а скорее программист. и память и флешка по базовому адресу 0x60000000 отмаплены на их-же физ адреса, насколько я понимаю этот арм.
Короче - кто знает как правильно к EP9307 прикрутить 2 флешки, получить 32 битную флешку таким образом и что нужно делать при инициализации если такай 32 разрядная "флеша" стоит?
|
|
|
|
|
 |
Ответов
|
Mar 17 2009, 23:13
|
Участник

Группа: Новичок
Сообщений: 47
Регистрация: 5-05-05
Пользователь №: 4 763

|
там висит DS1339U - часы. но также i2с выходит на разьемы, куда будут вставленые всякие умные устройства... так что напрягаться нужно по полной, протокол должен быть реализован по стандарту. я вроде его реализовал, но эти часики читаться не хотят(адрес устройства брал из даташита-он верный). пока я проверяю просто на послдеовательности вида
int ext_rtc_ping() { int lb; i2c_start(); //Start Trasfer lb=i2c_write (( DS1399_addr<<1) | 1); //Read Data i2c_stop(); return (lb); }
функция i2c_write, возвращает акноледж на байт, от слейва(то есть часов). должен быть нуль. возвращает единицу... то есть впечатление такое, что часов просто нет. поскольк они своим ключом должны занулить напрядение на data линии, на девятом клоке, генерируемом мастером. может опять непропай какой-то...
Сообщение отредактировал merk0 - Mar 17 2009, 23:18
|
|
|
|
|
Mar 17 2009, 23:20
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(merk0 @ Mar 18 2009, 02:13)  так что напрягаться нужно по полной, протокол должен быть реализован по стандарту. Ну, совсем по стандарту вряд ли возможно сделать просто на GPIO. Мастер-то хоть один будет? Можете проверить на этом. Не соответствует спецификации, зато точно работает. CODE //******************************************************************************
__inline void i2c_force_scl(void) { PGDR &= ~SCL; }
__inline void i2c_release_scl(void) { PGDR |= SCL; }
__inline void i2c_force_sda(void) { PGDR &= ~SDA; PGDDR |= SDA; }
__inline void i2c_release_sda(void) { PGDDR &= ~SDA; }
__inline u_int i2c_read_sda(void) { return (PGDR & SDA); }
//******************************************************************************
int i2c_ini(void) { // HW EEDrive = 0x00; PGDR &= ~SDA; PGDR |= SCL; PGDDR &= ~SDA; PGDDR |= SCL;
return 0; }
u_int i2c_write_byte(u_int data) { u_int a;
for(a = 0; a < 8; a++) { i2c_force_scl(); i2c_qp_dly(); data <<= 1; if(data & (1 << 8)) i2c_release_sda(); else i2c_force_sda(); i2c_qp_dly(); i2c_release_scl(); i2c_hp_dly(); }
i2c_force_scl(); i2c_qp_dly(); i2c_release_sda(); i2c_qp_dly(); i2c_release_scl(); i2c_hp_dly(); if(i2c_read_sda()) return 1; else return 0; }
u_int i2c_read_byte(u_int ack) { u_int a, data;
data = 0; for(a = 0; a < 8; a++) { i2c_force_scl(); i2c_qp_dly(); i2c_release_sda(); i2c_qp_dly(); i2c_release_scl(); i2c_hp_dly();
data <<= 1; if(i2c_read_sda()) data |= 1; } i2c_force_scl(); i2c_qp_dly(); if(!ack) i2c_force_sda(); else i2c_release_sda(); i2c_qp_dly(); i2c_release_scl(); i2c_hp_dly();
return data; }
void i2c_start(void) { i2c_force_scl(); i2c_qp_dly(); i2c_release_sda(); i2c_qp_dly(); i2c_release_scl(); i2c_qp_dly();
i2c_force_sda(); i2c_hp_dly(); }
void i2c_stop(void) { i2c_force_scl(); i2c_qp_dly(); i2c_force_sda(); i2c_qp_dly(); i2c_release_scl(); i2c_qp_dly(); i2c_release_sda(); i2c_qp_dly(); }
void i2c_qp_dly(void) { u_int a = 0x80; while(--a) __asm{nop}; }
void i2c_hp_dly(void) { u_int a = 0x100; while(--a) __asm{nop}; }
//******************************************************************************
|
|
|
|
Сообщений в этой теме
merk0 вопрос по инициализации Cirrus EP9307 Mar 3 2009, 12:12 aaarrr Для нормальной работы 32-бит шины нужно соответств... Mar 3 2009, 13:19 merk0 Цитата(aaarrr @ Mar 3 2009, 16:19) Для но... Mar 3 2009, 13:55  aaarrr Цитата(merk0 @ Mar 3 2009, 16:55) какой в... Mar 3 2009, 14:07 AlexN Цитата(merk0 @ Mar 3 2009, 18:12) Читаю п... Mar 3 2009, 15:08 aaarrr У них есть оба варианта. У микросхем с микроновск... Mar 3 2009, 15:17 merk0 Огромное спасибо. Буду еще вопросы задавать. Mar 4 2009, 07:16 AlexN Цитата(merk0 @ Mar 4 2009, 13:16) Огромно... Mar 4 2009, 11:00  HardJoker Цитата(AlexN @ Mar 4 2009, 14:00) если не... Mar 4 2009, 11:03 merk0 скорее всего они поставили и впрямь для увеличения... Mar 4 2009, 12:59 aaarrr Цитата(merk0 @ Mar 4 2009, 15:59) finfo-... Mar 4 2009, 13:10 merk0 ЦитатаНе самый надежный вариант. А если один из от... Mar 4 2009, 14:07 aaarrr Цитата(merk0 @ Mar 4 2009, 17:07) имеете ... Mar 4 2009, 14:11 merk0 еще тупой вопросик.
читаю вот rtc, нужно ли запрещ... Mar 4 2009, 16:54 aaarrr А смысл запрещать? Регистр-то один. Mar 4 2009, 17:17 merk0 ЦитатаА смысл запрещать? Регистр-то один.
ну напри... Mar 4 2009, 17:27 aaarrr Цитата(merk0 @ Mar 4 2009, 20:27) если оп... Mar 4 2009, 18:04 merk0 а в данном устройстве навороты не нужны. нужно при... Mar 4 2009, 18:30 aaarrr Ну, воля Ваша. Я бы скорее организовал программное... Mar 4 2009, 21:03 merk0 вы лучше скажите, ...вот я слышал что в некоторых ... Mar 5 2009, 07:27 aaarrr Лишнее можно отключить в регистрах PwrCnt и Device... Mar 5 2009, 08:25 merk0 отлично!
еще вопрос в догонку...
позвонил разр... Mar 5 2009, 08:48 aaarrr Правильно понимаете.
У цирруса есть родная утилит... Mar 5 2009, 08:56 merk0 ЦитатаУ цирруса есть родная утилита для загрузки ф... Mar 5 2009, 09:40 aaarrr Да, код у них - говно редкостное.
Для себя написа... Mar 5 2009, 11:07 merk0 я хотел загручик записать в eeprom флешку. пока пр... Mar 5 2009, 12:10 merk0 вопрос - у меня какие-то баги...есть подозрение, ч... Mar 7 2009, 08:24 merk0 вопрос с порядком команд снимается.
это я пускал u... Mar 7 2009, 11:35 aaarrr SoftLock можно безопасно писать на C - порядок vol... Mar 7 2009, 12:00 merk0 aaarrr,
- а вы какую ос ставили на этот проц?
- е... Mar 9 2009, 09:54 aaarrr Пробовал Линукс, сейчас использую FreeRTOS со свои... Mar 9 2009, 13:46 merk0 вопрос. а есть какие-то особенности работы с порто... Mar 10 2009, 09:02 aaarrr У порта H каких-то особенностей нет. Ставите HonID... Mar 10 2009, 13:09 merk0 а у ep9307 такого бита нет - HonIDE.
у него нет I... Mar 10 2009, 13:18 aaarrr У него есть такой бит
Т.е. интерфейса нет, а бит ... Mar 10 2009, 13:21 merk0 поиск HonIDE по доке - ep9307 user guide ничего не... Mar 10 2009, 13:40 aaarrr Цитата(merk0 @ Mar 10 2009, 16:40) вот ка... Mar 10 2009, 13:51 merk0 у меня читаются стойкие нули из HDR.
из регистра H... Mar 10 2009, 14:17 merk0 вопрос по uart3.
инициализировал я его, запустил. ... Mar 11 2009, 13:17 aaarrr А если на UART3 подать сигнал с UART1 или компьюте... Mar 11 2009, 14:07 merk0 ну уарт3 особо ничего не подашь. он наглухо развед... Mar 11 2009, 14:16 aaarrr Осциллографом посмотрите тогда. Внутренний loopbac... Mar 11 2009, 14:26 merk0 проверял на 115200, молчок. видимо gps модуль силь... Mar 11 2009, 14:43 merk0 посмотрел ноги gps модулю своим древним осциллогра... Mar 12 2009, 09:54 merk0 вопрос.
в железке для общения по i2c используются ... Mar 17 2009, 08:42 aaarrr Цитата(merk0 @ Mar 17 2009, 11:42) не нуж... Mar 17 2009, 10:07 merk0 ЦитатаУ меня почему-то используется EEDrive = 0. Н... Mar 17 2009, 13:20 aaarrr Вы меня не поняли. SDA у меня является открытым ко... Mar 17 2009, 13:54 merk0 нашел какие-то мутные непонятки с этими пинами в с... Mar 17 2009, 22:46 aaarrr А что у Вас на I2C висит? Может, не стоит и напряг... Mar 17 2009, 22:51 merk0 мастер сам проц. все остальные слейвы. если проток... Mar 17 2009, 23:27 aaarrr Так пройдитесь по всем адресам, если не уверены. И... Mar 17 2009, 23:31 merk0 за код спасибо, щас посмотрю его глазами.. он для ... Mar 17 2009, 23:32 aaarrr Нет, открытый коллектор только на SDA. Работать до... Mar 17 2009, 23:32 merk0 а у вас EEdrive = 0;
то есть по даташиту - это не ... Mar 17 2009, 23:49 aaarrr Да, у меня сделана программная эмуляция open drain... Mar 17 2009, 23:51 merk0 ЦитатаДа, у меня сделана программная эмуляция open... Mar 18 2009, 00:01 aaarrr Цитата(merk0 @ Mar 18 2009, 03:01) А не о... Mar 18 2009, 00:12 merk0 ЦитатаНа SDA никогда не выставляется единица - дра... Mar 18 2009, 00:23 aaarrr Цитата(merk0 @ Mar 18 2009, 03:23) а попр... Mar 18 2009, 00:30 merk0 ну ладно..отличается-не отличается...главное что у... Mar 18 2009, 00:42 aaarrr Цитата(merk0 @ Mar 18 2009, 03:42) ну лад... Mar 18 2009, 00:50 merk0 ЦитатаА мой код работает, или тоже нет?
а я так ср... Mar 18 2009, 08:59 merk0 !!!!!!!!!... Mar 18 2009, 11:00 aaarrr Да, кризис в действии. Сочувствую. Обращайтесь, ес... Mar 18 2009, 11:58
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|