реклама на сайте
подробности

 
 
> Проблема с nRF905, НЕ могу достучаться до модуля
silqver
сообщение Jun 29 2007, 21:05
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 29-06-07
Пользователь №: 28 795



Пытаюся обмениваться данными по SPI с модулем tlx905 на базе чипа nRF905. Из регистра конфигурации считываются нули... Подскажите пожалуйста кто работал с этой микросхемой алгоритм чтения записи данных. Как я понял из ДТ: вначале включается SPI потом отправляетс байт команды и далее байты данных, отключается SPI, режим чипа для приема команды переключается именно в момент включения SPI чипа и записи байта. Буду очень признателен если поделитесь куском рабочей проги для конфигарции данного модуля.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Tcom
сообщение Jul 1 2007, 21:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Стучите в ICQ 301610730
Дам полную консультацию и примеры кодов для этого трансивера.

Вот моя библиотека для работы с этим чипом
Код
;************************************************
;** Подпрограмма работы с трансивером          **
;** nRF905 совместно с процессором             **
;** ATmega 48/88/168                           **
;************************************************
;*   ---- Используемые регистры --------------  *
;************************************************
;* Регистр Cfg предназначен для занесения пара- *
;* метра в вызываемую функцию                   *
;************************************************
;* регистр tmp1 для обмена данных               *
;* регистр tmp2 для обмена данных               *
;* регистр data для данных TX/RX                *
;************************************************
;*  CSN выбор трансивера                        *
;************************************************
;*  ------ Настройка портов SPI   ------        *
;************************************************
;*    ldi tmp1 , (1<<ddb3)|(1<<ddb5)|(1<<ddb2)  *
;*    out ddrb , tmp1                           *
;************************************************
;*  ------ Настройка  SPI модуля   ---------    *
;************************************************
;*    ldi tmp1 ,                                *
;*       (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0) *
;*    out spcr , tmp1                           *
;************************************************
freq_transiver:;установка рабочей частоты    
cbi CSN
rcall delay
ldi tmp1 , 0
rcall wait_spi
rcall wait_spi1
rcall delay
sbi CSN
rcall delay
ret
;-----------------
pwr_transiver: ;установка мощьности передатчика      
cbi CSN
rcall delay
ldi tmp1 , 1
rcall wait_spi
rcall wait_spi1
rcall delay
sbi CSN
rcall delay
ret
;-----------------
spectr_transiver:; установка ширины RX и TX адресa    
cbi CSN
rcall delay
ldi tmp1 , 2
rcall wait_spi
rcall wait_spi1
rcall delay
sbi CSN
rcall delay
ret
;-------------------------
spectr_data_transiver_rx:;ширина RX данныx
cbi CSN
rcall delay
ldi tmp1 , 3
rcall wait_spi
rcall wait_spi1
rcall delay
sbi CSN
rcall delay
ret
;------------------------
spectr_data_transiver_tx:; ширина TX данныE
cbi CSN
rcall delay
ldi tmp1 , 4
rcall wait_spi
rcall wait_spi1
rcall delay
sbi CSN
rcall delay
ret
;------------------------
rx_adress_transiver:    ;запись адреса приёмника
cbi CSN
rcall delay
ldi tmp1 , 5
rcall wait_spi
ldi tmp1 , 0xE7  ;адрес приёмника [0]
rcall wait_spi
rcall delay
sbi CSN
rcall delay      
cbi CSN
rcall delay
ldi tmp1 , 6
rcall wait_spi
ldi tmp1 , 0xE7 ;адрес приёмника [1]
rcall wait_spi
rcall delay
sbi CSN
rcall delay      
cbi CSN
rcall delay
ldi tmp1 , 7
rcall wait_spi
ldi tmp1 , 0xE7 ;адрес приёмника [2]
rcall wait_spi
rcall delay
sbi CSN
rcall delay        
cbi CSN
rcall delay
ldi tmp1 , 8
rcall wait_spi
ldi tmp1 , 0xE7 ;адрес приёмника [3]
rcall wait_spi
rcall delay
sbi CSN
rcall delay
ret
;------------------------
mode_qr_transiver:  ; установка конфигурации кварца и т.д.
cbi CSN
rcall delay
ldi tmp1 , 9
rcall wait_spi
rcall wait_spi1
rcall delay
sbi CSN
rcall delay
ret

;-----------------------
tx_adress_transiver: ;апись адреса передатчика
cbi CSN
rcall delay
ldi tmp1 , 34
rcall wait_spi
ldi tmp1 , 0xE7 ;адрес передатчика [0]
rcall wait_spi
ldi tmp1 , 0xE7 ;адрес передатчика [1]
rcall wait_spi
ldi tmp1 , 0xE7 ;адрес передатчика [2]
rcall wait_spi
ldi tmp1 , 0xE7 ;адрес передатчика [3]
rcall wait_spi
rcall delay
sbi CSN
rcall delay
ret
;------------------------
rx_data_transiver: ;считать данные с буфера приёмника
cbi CSN
rcall delay
ldi tmp1 , 36
rcall wait_spi
ldi tmp1 , 0
rcall wait_spi
in data , SPDR
rcall delay
sbi CSN
rcall delay
ret
;------------------------
tx_data_transiver1:;3аписать данные в буфер передатчика
cbi CSN
rcall delay
ldi tmp1 , 32
rcall wait_spi
mov tmp1,data
rcall wait_spi
rcall delay
sbi CSN
rcall delay
ret
;------------------------
delay:
;push tmp1
ldi tmp1 , 0xff
wdr
nop
nop
nop
nop
dec tmp1
brne pc-5
;pop tmp1
ret
;-------------------------
wait_spi:                
out SPDR , tmp1
in tmp2 , spsr
sbrs tmp2 , spif
rjmp pc-2
ret
;-------------------------
wait_spi1:                
out SPDR , cfg
in tmp2 , spsr
sbrs tmp2 , spif
rjmp pc-2
ret
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 16:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016