C8051F310 SPI总线调试问题

huhaodiao1 2012-12-11 10:07:48
在调试SPI总线的过程中,如果参考SILAB公司的源代码,SPI总线可以出现正确的时序波形。
但是当我禁止UART模块(XBR0 bit0)输出,或者注释掉UART_Init代码后,相应SPI端口无波形输出。
烦请做过相关c51特别是C8051F31X的朋友们帮助分析下!
...全文
293 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
net_friends 2012-12-12
  • 打赏
  • 举报
回复
看datasheet 寄存器设置
  • 打赏
  • 举报
回复
两者正常的话,应该是没啥关联。 有关联的话, 可能是你引脚复用了。 你SPI那部分代码应该是没问题的,个人觉得应把问题集中在初始化时reg设置上。 比如:5楼说的那个REG,以及关于CLK引脚的REG.
zhujinqiang 2012-12-11
  • 打赏
  • 举报
回复
上电复位后 IO口都是输入口,无输出. 要写交叉开关配置寄存器先.
刘畅1208 2012-12-11
  • 打赏
  • 举报
回复
你把源码贴出来啊。 我估计是你的IO口没分配好(交叉开关的P*SKIP没设置好),UART和SPI共用一个口了(猜的)。
zhujinqiang 2012-12-11
  • 打赏
  • 举报
回复
注意C8051 的特点 结构差异 C8051F12X单片机与8051单片机在结构上的最大区别有四点:外引脚采用交叉开关配置;系统时钟源多样且控制灵活;内部特殊功能寄存器SFR种类数量增多;具有基于JTAG接口的在系统调试功能。下面主要介绍前三部分内容。 2.1 可编程数字I/O和交叉开关 可编程数字I/O和交叉开关是一个大的数字开关网络,它允许将内部数字系统资源分配给端口I/O引脚。与具有标准复用数字I/O的微控制器不同,这种结构支持所有的功能组合。可通过设置交叉开关控制寄存器(XBR2、XBR1和XBR0)将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其它数字信号配置为在端口I/O引脚出现,这就使用户可以根据自己的特定应用选择通用端口I/O和需数字资源的组合。而不同于8051单片机的引脚基本是固定分配的。C8051F系列通过优先权交叉开关译码器来控制数字开关网络,优先权交叉开关译码器的值由交叉开关控制寄存器(XBR2、XBR1和XBR0)来配置,如图1所示。优先权交叉开关译码器按优先权顺序从P0.0开始,可以一直分配到P3.7,它为数字外设所分配的端口引脚的优先顺序是按系统默认的顺序,即:串行通信UART0具有最高优先级,TX0和RX0分别被分配到P0.0和P0.1 串行通信SPI具有次高优先级,详细的端口引脚的优先分配顺序表请参考有关资料。如果不选择某个资源,则优先顺序表中的下一个功能将填充这个位置。图2所示是三个交叉开关控制寄存器(XBR2、XBR1和XBR0)中各位的含义,它们的复位值均为00000000。 当交叉开关配置寄存器XBR2、XBR1和XBR0中外设的对应位被设置成逻辑1时,交叉开关将端口引脚分配给外设;如果一个数字外设的允许位未被设置成逻辑1,则其端口不能通过引脚访问。未被设置的交叉开关分配端口可当作标准连续的I/O口使用。在系统复位后,默认的寄存器XBR2、XBR1和XBR0的值均为零,即所有I/O引脚被强迫成输入口(带上拉),且不与内部资源连通。这样,没有输出的系统显然无意义,所以,无论如何都应置XBR2的第6位为1,使交叉开关允许以便引出输出信号。
zhujinqiang 2012-12-11
  • 打赏
  • 举报
回复
楼主看看那,你的SPI DI和CLK是定义在那个脚上面蛮?
zhujinqiang 2012-12-11
  • 打赏
  • 举报
回复
那是UART和SPI有关联莫?

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧