打印
[方案相关]

HC32F460

[复制链接]
1246|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
loutin|  楼主 | 2022-2-27 10:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
首先是JTAG 和SWD的问题,假如用习惯ST cubemx HAL库的小伙伴是不用管这个的,可以直接引脚复用配置。JTAG :TDI TDO CLK DAT RST     SWD:   CLK DAT     RST原则上可以省掉

   HC32F460默认是JTAG 模式   如果你使用SWD模式 然后需要使用 PB3 和PA15引脚的话,需要操作操作寄存器

    /* unlock */
    M4_PORT->PWPR = 0xA501u;
    bM4_PORT_PSPCR_SPFE2=0; //LED1   TDI
    bM4_PORT_PSPCR_SPFE3=0; //LED2   TDO

    bM4_PORT_PSPCR_SPFE4=0; //PWM Time43_WL  RST
    /* lock */
    M4_PORT->PWPR = 0xA500u;//禁用JTAG的 TDI TDO  RST 释放IO



2 SPI  使用SDK 里面的NSS引脚复用,做SPI主机  做硬件flash读取是没问题的,当接外部从机传感器时,传感器示波器测试是有数据的,可是DR就是读不上来。

所以我干脆自己把NSS的复用屏蔽了,自己初始化为GPIO 然后读写的时候拉高拉低

    stc_spi_init_t stcSpiInit;
    stc_port_init_t stcPortInit;


    MEM_ZERO_STRUCT(stcPortInit);
    MEM_ZERO_STRUCT(stcSpiInit);

    /* Configuration peripheral clock */
    PWC_Fcg1PeriphClockCmd(SPI_UNIT_CLOCK, Enable);

    stcPortInit.enPinMode = Pin_Mode_In;
    stcPortInit.enExInt = Disable;
    stcPortInit.enPullUp = Enable;
    PORT_Init(SPI_MISO_PORT, SPI_MISO_PIN, &stcPortInit);

    stcPortInit.enPinMode = Pin_Mode_Out;
    stcPortInit.enExInt = Disable;
    stcPortInit.enPullUp = Disable;
    PORT_Init(SPI_NSS_PORT, SPI_NSS_PIN, &stcPortInit);

    /* Configuration SPI pin */
    PORT_SetFunc(SPI_SCK_PORT, SPI_SCK_PIN, SPI_SCK_FUNC, Disable);
//    PORT_SetFunc(SPI_NSS_PORT, SPI_NSS_PIN, SPI_NSS_FUNC, Disable);
    PORT_SetFunc(SPI_MOSI_PORT, SPI_MOSI_PIN, SPI_MOSI_FUNC, Disable);
    PORT_SetFunc(SPI_MISO_PORT, SPI_MISO_PIN, SPI_MISO_FUNC, Disable);

    /* Configuration SPI structure */
    stcSpiInit.enClkDiv = SpiClkDiv8;
    stcSpiInit.enFrameNumber = SpiFrameNumber1;
    stcSpiInit.enDataLength = SpiDataLengthBit8;
    stcSpiInit.enFirstBitPosition = SpiFirstBitPositionMSB;
    stcSpiInit.enSckPolarity = SpiSckIdleLevelLow;
    stcSpiInit.enSckPhase = SpiSckOddSampleEvenChange;
    stcSpiInit.enReadBufferObject = SpiReadReceiverBuffer;
    stcSpiInit.enWorkMode = SpiWorkMode4Line;
    stcSpiInit.enTransMode = SpiTransFullDuplex;
    stcSpiInit.enCommAutoSuspendEn = Disable;
    stcSpiInit.enModeFaultErrorDetectEn = Disable;
    stcSpiInit.enParitySelfDetectEn = Disable;
    stcSpiInit.enParityEn = Disable;
    stcSpiInit.enParity = SpiParityEven;

#ifdef SPI_MASTER_MODE
    stcSpiInit.enMasterSlaveMode = SpiModeMaster;
    stcSpiInit.stcDelayConfig.enSsSetupDelayOption = SpiSsSetupDelayCustomValue;
    stcSpiInit.stcDelayConfig.enSsSetupDelayTime = SpiSsSetupDelaySck1;
    stcSpiInit.stcDelayConfig.enSsHoldDelayOption = SpiSsHoldDelayCustomValue;
    stcSpiInit.stcDelayConfig.enSsHoldDelayTime = SpiSsHoldDelaySck1;
    stcSpiInit.stcDelayConfig.enSsIntervalTimeOption = SpiSsIntervalCustomValue;
    stcSpiInit.stcDelayConfig.enSsIntervalTime = SpiSsIntervalSck6PlusPck2;
    stcSpiInit.stcSsConfig.enSsValidBit = SpiSsValidChannel0;
    stcSpiInit.stcSsConfig.enSs0Polarity = SpiSsLowValid;
#endif

#ifdef SPI_SLAVE_MODE
    stcSpiInit.enMasterSlaveMode = SpiModeSlave;
    stcSpiInit.stcSsConfig.enSsValidBit = SpiSsValidChannel0;
    stcSpiInit.stcSsConfig.enSs0Polarity = SpiSsLowValid;
#endif

    SPI_Init(SPI_UNIT, &stcSpiInit);
    SPI_Cmd(SPI_UNIT, Enable);



目前暂时只做了一些简单的外设测试,更多问题后续记录。


————————————————

原文链接:https://blog.csdn.net/u014803614/article/details/112233785

使用特权

评论回复
沙发
sparrow054| | 2022-3-1 11:31 | 只看该作者
有点高深

使用特权

评论回复
板凳
probedog| | 2022-3-2 11:52 | 只看该作者
期待楼主更新

使用特权

评论回复
地板
skyred| | 2022-3-2 13:46 | 只看该作者
不错啊 ,值得学习

使用特权

评论回复
5
麻花油条| | 2022-3-2 14:56 | 只看该作者
值得学习,期待后续更新

使用特权

评论回复
6
sparrow054| | 2022-3-3 13:37 | 只看该作者
还好转到了hal库~~~~

使用特权

评论回复
7
tpgf| | 2022-3-3 19:50 | 只看该作者
小华也支持SWD吗

使用特权

评论回复
8
xiaoqizi| | 2022-3-3 20:59 | 只看该作者
是四线下载是吗

使用特权

评论回复
9
木木guainv| | 2022-3-3 21:10 | 只看该作者
SWD貌似就是两根线吧

使用特权

评论回复
10
yangxiaor520| | 2022-3-4 07:57 | 只看该作者
学习了,期待后续更新。

使用特权

评论回复
11
match007| | 2022-3-8 17:54 | 只看该作者
期待再讲的浅显一点

使用特权

评论回复
12
华大MCU代理| | 2022-3-9 15:14 | 只看该作者
tpgf 发表于 2022-3-3 19:50
小华也支持SWD吗

支持的哦

使用特权

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

本版积分规则

55

主题

1327

帖子

0

粉丝