共2条
1/1 1 跳转至页
ㄐ偶际?PTR8000 菜鸟求助--关于PTR8000
问
小弟我刚买回来两块PTR8000的模块.
想看看是否能和我用的C8051F330接通.想法很简单,就是向NRF905里面的配置寄存器里面写数据,然后再原封不动的把它读出来,看看是不是我写的.
如果是的,证明应该是通了.但是发现一个问题,不管我写的是什么,读出来的都是FF.....这个我是用调试工具在内存中看的.百思不得其解,请大家帮帮忙,谢谢了.下面是我的源程序代码:
$include (c8051f330.inc)
cd equ p0.7
pwr equ p0.6
trx_ce equ p0.5
txen equ p0.4
am equ p1.0
dr equ p1.1
sck equ p1.2
miso equ p1.3
mosi equ p1.4
csn equ p1.5
org 0000h
ljmp main
org 0030h
main: anl PCA0MD, #NOT(040h) ;关闭看门狗
MOV SP,#60H
MOV OSCICN,#080H ;设置时钟频率为3.0625M
mov P0MDOUT, #0FFh
mov P1MDOUT, #03Fh
mov P0SKIP, #0FFh
mov P1SKIP, #0FFh
mov XBR1, #040h ;以上为初始化IO引脚定义
ini: setb pwr
clr trx_ce ;进入空闲编程模式
setb csn
mov r0,#00h
clr csn ;开启SPI
acall spiout ;发送命令为向配置寄存器0000H写数据
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout ;以上用很笨的方法发了十个数据 全为0
setb csn ;关闭SPI
mov r0,#10h ;读地址为0000H 的配置寄存器
clr csn
acall spiout ;发送命令为读数据(待发送)
acall spiin ;接受数据
mov 20h,r0
acall spiin
mov 21h,r0
acall spiin
mov 22h,r0
acall spiin
mov 23h,r0
acall spiin
mov 24h,r0
acall spiin
mov 25h,r0
acall spiin
mov 26h,r0
acall spiin
mov 27h,r0
acall spiin
mov 28h,r0
acall spiin
mov 29h,r0 ;以上用很笨的方法存了十个数据全为FF
;理论上应该读到的数据为0
setb csn
sjmp $
;***********************************************************
;spi通讯子程序
;**************************************************************
;read返回参数在R0中
spiin: nop
clr c
clr a
mov r1,#08h
spiin1: clr sck
nop
nop
mov c,miso
rlc a
setb sck
nop
nop
djnz r1,spiin1
mov r0,a
ret
;write入口参数在RO中
spiout: clr sck
clr c
mov r1,#08h
mov a,r0
spiout1: nop
MOV C,ACC.7
MOV MOSI,C
rlc a
setb sck
nop
nop
clr sck
djnz r1,spiout1
setb sck
ret
end
想看看是否能和我用的C8051F330接通.想法很简单,就是向NRF905里面的配置寄存器里面写数据,然后再原封不动的把它读出来,看看是不是我写的.
如果是的,证明应该是通了.但是发现一个问题,不管我写的是什么,读出来的都是FF.....这个我是用调试工具在内存中看的.百思不得其解,请大家帮帮忙,谢谢了.下面是我的源程序代码:
$include (c8051f330.inc)
cd equ p0.7
pwr equ p0.6
trx_ce equ p0.5
txen equ p0.4
am equ p1.0
dr equ p1.1
sck equ p1.2
miso equ p1.3
mosi equ p1.4
csn equ p1.5
org 0000h
ljmp main
org 0030h
main: anl PCA0MD, #NOT(040h) ;关闭看门狗
MOV SP,#60H
MOV OSCICN,#080H ;设置时钟频率为3.0625M
mov P0MDOUT, #0FFh
mov P1MDOUT, #03Fh
mov P0SKIP, #0FFh
mov P1SKIP, #0FFh
mov XBR1, #040h ;以上为初始化IO引脚定义
ini: setb pwr
clr trx_ce ;进入空闲编程模式
setb csn
mov r0,#00h
clr csn ;开启SPI
acall spiout ;发送命令为向配置寄存器0000H写数据
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout ;以上用很笨的方法发了十个数据 全为0
setb csn ;关闭SPI
mov r0,#10h ;读地址为0000H 的配置寄存器
clr csn
acall spiout ;发送命令为读数据(待发送)
acall spiin ;接受数据
mov 20h,r0
acall spiin
mov 21h,r0
acall spiin
mov 22h,r0
acall spiin
mov 23h,r0
acall spiin
mov 24h,r0
acall spiin
mov 25h,r0
acall spiin
mov 26h,r0
acall spiin
mov 27h,r0
acall spiin
mov 28h,r0
acall spiin
mov 29h,r0 ;以上用很笨的方法存了十个数据全为FF
;理论上应该读到的数据为0
setb csn
sjmp $
;***********************************************************
;spi通讯子程序
;**************************************************************
;read返回参数在R0中
spiin: nop
clr c
clr a
mov r1,#08h
spiin1: clr sck
nop
nop
mov c,miso
rlc a
setb sck
nop
nop
djnz r1,spiin1
mov r0,a
ret
;write入口参数在RO中
spiout: clr sck
clr c
mov r1,#08h
mov a,r0
spiout1: nop
MOV C,ACC.7
MOV MOSI,C
rlc a
setb sck
nop
nop
clr sck
djnz r1,spiout1
setb sck
ret
end
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |