完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
cc2530 终端上面外接了一块SPI Flash. 在裸机(不跑协议栈的时候)上面测试Flash的时候,一切读写正常; 如果终端没有加入协调器的时候,测试SPI Flash的读写也是一切正常;
当终端加入协调器后,从0地址读取Flash的时候,读出来的数据就错位了(比如,第一个字节的数据变成了第二个字节的数据,第二个字节的数据变成了第三个字节的数据)。这时当协调器断电以后(终端断开连接),读出来的数据依旧错位。 |
|
相关推荐
2 个讨论
|
|
问题终于解决了。在读取单个字节的时候,发送完0xFF(Command)以后,等待发送完成的方法有问题,以前是这样的读取一个字节的:
uint8 SPI_ReadWriteByte( uint8 Command ) [ uint8 Rxdata; U1DBUF = Command; while( 0 == ( U1CSR & ( 1 << 1 ) ) ); //直到发送完成 U1CSR &= ~( 1 << 1 ); //clear flag Rxdata = U1DBUF; return Rxdata; ] 采取这种方式会导致连网以后,在最后一个时钟周期,没有片选信号。采用以下方式即可解决: uint8 SPI_ReadWriteByte( uint8 Command ) [ uint8 Rxdata; U1DBUF = Command; // while( 0 == ( U1CSR & ( 1 << 1 ) ) ); //直到发送完成 while (U1ACTIVE); U1CSR &= ~( 1 << 1 ); //clear flag Rxdata = U1DBUF; return Rxdata; ] |
|
|
|
|
|
梓沐凡晨 发表于 2020-8-10 08:41 您好: 我也遇到了类似的读取数据错误问题; 这里提到的寄存器ACTIVE位Datasheet的解释是:USART transmit/receive active status. In SPI slave mode, this bit equals slave select. 这里使用master mode ,还是应该判断TX_BYTE,也就是while( 0 == ( U1CSR & ( 1 << 1 ) ) ); |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
341 浏览 1 评论
539 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
781 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
655 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1138 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
69浏览 29评论
200浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
256浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
205浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
65浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 00:48 , Processed in 0.970826 second(s), Total 43, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号