打印

103VE的SPI3使用求助

[复制链接]
2511|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzzly|  楼主 | 2010-10-22 11:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
系统SPI1和SPI2工作正常,SPI3初始化后引脚状态都不对,请香版指点,谢谢!
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);    //SCK2,MISO2,MOSI2开漏复用输出

NVIC_InitStructure.NVIC_IRQChannel = SPI2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_Init(&NVIC_InitStructure);

SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &SPI_InitStructure);
SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_TXE, DISABLE);
SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_RXNE, DISABLE);
SPI_Cmd(SPI2, ENABLE);


AFIO->MAPR=AFIO->MAPR & 0x00FFFFFF;
AFIO->MAPR=AFIO->MAPR | 0x02000000;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);    //SCK3,MISO3,MOSI3开漏复用输出

NVIC_InitStructure.NVIC_IRQChannel = SPI3_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
NVIC_Init(&NVIC_InitStructure);

SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI3, &SPI_InitStructure);
SPI_I2S_ITConfig(SPI3, SPI_I2S_IT_TXE, DISABLE);
SPI_I2S_ITConfig(SPI3, SPI_I2S_IT_RXNE, DISABLE);
SPI_Cmd(SPI3, ENABLE);
沙发
香水城| | 2010-10-22 14:04 | 只看该作者
SPI3的时钟开了吗?

使用特权

评论回复
板凳
yzzly|  楼主 | 2010-10-22 14:25 | 只看该作者
本帖最后由 yzzly 于 2010-10-22 14:27 编辑

语句
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
应该是使能SPI3的时钟吧?
怎么样可以把PB3、PB4、PB5从JTAG口配置为SPI3口?同样的配置SPI2的SCK2空闲为0,MOSI2为1;而SPI3的SCK3为1,MOSI3为0;好像是引脚没有配置成功。

使用特权

评论回复
地板
yzzly|  楼主 | 2010-10-22 15:03 | 只看该作者
香版,有没有使用SPI3的例程参考?估计还是复用和重映射的问题,我没有设置好又不知道怎么弄。

使用特权

评论回复
5
yzzly|  楼主 | 2010-10-22 16:08 | 只看该作者
难道这论坛上没有人用过SPI3吗?本人用SPI1驱动2片DA,SPI2和SPI3分别驱动4片AD9835,;第一块板调试时发现SPI3工作不对,以为是引脚坏了,就把SPI3驱动的片子连到SPI2上也就是SPI2驱动8片AD9835,;最近系统差不多做完了,换一块板子调试,又发现同样的SPI3不工作的问题,这才引起重视;如果直接用SPI2驱动也没有问题,我不喜欢碰到技术问题就绕着走,总希望能够弄明白原因,哪位大虾帮帮我啊?谢谢!

使用特权

评论回复
6
香水城| | 2010-10-22 16:18 | 只看该作者
1)问SPI3的问题,怎么楼主位贴出SPI2的程序?
2)没有做重映射时,SPI3与JTAG调试共用引脚,你重新配置JTAG了吗?  另外,你知道重新配置JTAG后不能用JTAG调试吗?你打算怎么调试?
3)如果使用重映射的SPI3,你是怎么初始化的?

使用特权

评论回复
7
yzzly|  楼主 | 2010-10-22 23:27 | 只看该作者
TO:香版
1:前一部分是SPI2初始化程序,后一部分是SPI3初始化程序;
2:语句
   AFIO->MAPR=AFIO->MAPR & 0x00FFFFFF;
     AFIO->MAPR=AFIO->MAPR | 0x02000000;
    能否实现重新配置JTAG?重新配置JTAG也就是关闭JTAG后不是还有SW-DP调试接口吗??
   并且我的系统只连接了SW-DP接口的2根线,调试没有问题啊!

使用特权

评论回复
8
yzzly|  楼主 | 2010-10-24 14:08 | 只看该作者
:(

使用特权

评论回复
9
yzzly|  楼主 | 2010-10-24 14:08 | 只看该作者
:(

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

427

主题

1173

帖子

3

粉丝