OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5767|回复: 8

以太网模块接入SPI3如何接法

[复制链接]

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
发表于 2013-11-10 21:45:34 | 显示全部楼层 |阅读模式
由于自己做了一块板,以太网用了SPI3的,总是接入失败,
所以改用正点原子的标准程序《实验52 ENC28J60网络模块实验》、战舰板、以太网模块,改成SPI3也没办法接成功,
请能人的指点下为什么

硬件资源改变是:
              原SPI2  --->  SPI3
RST        G6              D5
MISO      B14             PB4
SCK        B13             PB3
MOSI      B15             PB5
INT        D2               PB6
CS          G8              A15

软件的改动:
1.去除LED及初始化(DS0与PA15冲突)

2.宏定义的改动
  // #define ENC28J60_CS PGout(8) //ENC28J60片选信号
  // #define ENC28J60_RST         Gout(6) //ENC28J60复位信号

  #define ENC28J60_CS PAout(15) //ENC28J60片选信号
  #define ENC28J60_RST         Dout(5) //ENC28J60复位信号
  (注,未找到INT的定义,应该程序未使用)


3.初始化的改动
    (enc28j60c)
RCC->APB2ENR|=1<<2;   //使能PORTA时钟    
  RCC->APB2ENR|=1<<5; //使能PORTD时钟
GPIOD->CRL&=0XFF0FFFFF; 
GPIOD->CRL|=0X00300000; //PD5 推挽    
GPIOD->ODR|=1<<5;     //上拉
GPIOA->CRH&=0X0FFFFFFF; 
GPIOA->CRH|=0X30000000; //PA15 推挽    
GPIOA->ODR|=1<<15;      //上拉
   (spi.c)
//对SPI3口初始化
RCC->APB1ENR|=1<<3;   //PORTB时钟使能  
GPIOB->CRL&=0XFF000FFF; 
GPIOB->CRL|=0X00BBB000; //PA3/4/5复用    
GPIOB->ODR|=0X7<<3;   //PA3/4/5上拉
//对CS信号线初始化
RCC->APB1ENR|=1<<2;   //PORTA时钟使能  
GPIOA->CRL&=0X0FFFFFFF; 
GPIOA->CRH|=0X30000000; //PA15推挽    
GPIOA->ODR|=1<<15;     //PA15上拉

RCC->APB1ENR|=1<<15;   //SPI3时钟使能 

4.SPI的改动
   找到SPI2全替换成SPI3


现象,初始化不成功,已经调了两天了,请指点,谢谢!


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-11-10 21:57:32 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-11-10 22:15:10 | 显示全部楼层
回复【楼主位】lanny_cn:
---------------------------------
SPI3的时钟开启了么?
这种问题,可以先软件仿真,看看SPI/GPIO的寄存器状态,是否都正确。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-11-10 22:36:58 | 显示全部楼层
好,谢谢,我试试,教我了一个方法,我担心的是代码理其它资源的使用冲突。等调试成功了再回复。
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-11-11 17:16:52 | 显示全部楼层
问题解决了,比较搞,是调试口与PA15冲突了
(我实际只使用SW模式,所以根本没注意到这回事,是无意中看到这句话的)
    复位后,JTAG引脚被置于输入上拉或下拉模式: ─ A15:JTDI置于上拉模式

解决代码:
//设置SWJ_CFG位,与PA15冲突 (010:关闭JTAG-DP,启用SW-DP)
RCC->APB2ENR |= 1<<0;
AFIO->MAPR   |= 2<<24;

所以有个别GPIO端口,即使是正确设置了,你也看到值了,照样不能用,我所知道有三个口
1. USB端口(这个需要开启),但是实际速度不是50M,也不是72M,而应该是480M(有高级示波器的大家量一下波形)
2. 调试口JTAG/SW(复位时默认启用)
3. 晶振接入口

就是说这些功能一旦是启用的,你看GPIO没毛用(即芯片中,这些功能抢在GPIO之前)

其它可能还有,大家再补充补充
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-11-11 17:25:10 | 显示全部楼层
哦,随便想到一个恶心的恶心破解人的方法,把重要信号加到SWD引脚(PA13/PA14)上,你主板测试时,测试板走飞线,比如重要功能实际使用的是PA3/4,你全部完成后,再改程序,装到未飞线的板上。这样,即使取出程序后,如果想破解你的代码,也没办法直接SWD联线调试了(因为用了SWD你的功能就没办法运行正确了)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-11-11 19:58:26 | 显示全部楼层
回复【6楼】lanny_cn:
---------------------------------
呵呵,别人可以改到其他IO上面啊.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2013-8-20
在线时间
0 小时
 楼主| 发表于 2013-11-11 21:39:22 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
那就要修改程序啊,使用那个脚的代码可以做点小技巧呐,比如代码是存的n-0x200的,使用时再加回去用n(定义个全局可变变量,再定义个宏就成了,编译器就不会自动合并了)
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-6-12
在线时间
4 小时
发表于 2019-6-19 23:44:10 | 显示全部楼层
楼主能发一下解决后的代码???
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 18:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表