找回密码
 立即注册
查看: 246|回复: 10

STC32F技术手册笔误 20240202版本|有关超时寄存器

[复制链接]
  • TA的每日心情
    开心
    昨天 09:45
  • 签到天数: 150 天

    [LV.7]常住居民III

    39

    主题

    420

    回帖

    2260

    积分

    荣誉版主

    积分
    2260
    发表于 2024-3-3 16:05:03 | 显示全部楼层 |阅读模式
    本帖最后由 王昱顺 于 2024-3-5 10:45 编辑

    备注:32G手册也是有这个问题的
    第589页
    截图202403031603252568.jpg


    I2C部分也有同样的错误
    第615页
    截图202403031604374590.jpg

    截图202403031604586246.jpg

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:45
  • 签到天数: 150 天

    [LV.7]常住居民III

    39

    主题

    420

    回帖

    2260

    积分

    荣誉版主

    积分
    2260
     楼主| 发表于 2024-3-3 16:07:03 | 显示全部楼层
    本帖最后由 王昱顺 于 2024-3-3 16:37 编辑

    顺便问一下这个
    截图202403031606088091.jpg

    测试多种方法都无法进入超时中断,直接判断标志位也没发现超时中断标志位置1.

    请问有没有关于SPI超时中断的测试程序学习一下?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:08
  • 签到天数: 202 天

    [LV.7]常住居民III

    67

    主题

    913

    回帖

    3110

    积分

    论坛元老

    积分
    3110
    发表于 2024-3-3 17:52:57 | 显示全部楼层
    楼主很细心,发现笔误了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 164 天

    [LV.7]常住居民III

    27

    主题

    1447

    回帖

    4512

    积分

    论坛元老

    积分
    4512
    发表于 2024-3-3 18:57:07 | 显示全部楼层

    附件是STC32F做SPI从机使能超时中断的例子,供参考:

    STC32F-SPI从机超时中断.zip (16.82 KB, 下载次数: 8)

    点评

    你好,经过测试发现了一些小问题,芯片是STC32F12K54 固件版本号7.4.6U [attachimg]36984[/attachimg] 这部分是SPI的初始化代码,现在出现的问题是。如果上电后不做任何动作,正常开始发数据以后就不会进入超时中  详情 回复 发表于 2024-3-5 08:33
    好的非常感谢  详情 回复 发表于 2024-3-3 19:12
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:45
  • 签到天数: 150 天

    [LV.7]常住居民III

    39

    主题

    420

    回帖

    2260

    积分

    荣誉版主

    积分
    2260
     楼主| 发表于 2024-3-3 19:12:37 | 显示全部楼层
    乘风飞扬 发表于 2024-3-3 18:57
    附件是STC32F做SPI从机使能超时中断的例子,供参考:

    好的非常感谢
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:45
  • 签到天数: 150 天

    [LV.7]常住居民III

    39

    主题

    420

    回帖

    2260

    积分

    荣誉版主

    积分
    2260
     楼主| 发表于 2024-3-5 08:33:21 | 显示全部楼层
    乘风飞扬 发表于 2024-3-3 18:57
    附件是STC32F做SPI从机使能超时中断的例子,供参考:

    你好,经过测试发现了一些小问题,芯片是STC32F12K54 固件版本号7.4.6U

    截图202403050825364717.jpg

    这部分是SPI的初始化代码,现在出现的问题是。如果上电后不做任何动作,正常开始发数据以后就不会进入超时中断
    如果拔掉SCLK信号线,则可以进入超时中断,重新插回去如果时机得当,则会开始正常的触发超时中断。


    设置的是CPLO=0;CPHA=1;SCLK不动作为低电平。看示波器里面的数据应该是没有问题的。
    为什么超时计时不生效呢?
    1. <font size="5">void SPI_Init(void)
    2. {
    3.     P_SW2 |= 0x80;                             // 扩展寄存器(XFR)访问使能
    4.     SPSTAT = 0xc0;                             // 清除标志位
    5.     SPCTL = 0xe7;                              // 忽略SS引脚功能,使能SPI功能,LSB优先,主机模式,下降沿采样数据,速率/4=52/4=13Mhz
    6.     ESPI = 1;                                  // 关闭SPI中断功能
    7.     SPDAT = 0xaa;                              // 设置回复的第一个字节
    8.     DMA_SPI_STA = 0x00;                        // 清零DMA标志位
    9.     DMA_SPI_CFG2 = 0x03;                       // 不自动控制SS,SS引脚为P3.5
    10.     DMA_SPI_CFG = 0xab;                        // 使能SPI_DMA中断,禁止发送,允许接收。中断优先级3,总线访问优先3
    11.     DMA_SPI_CR = 0x81;                         // 允许SPI_DMA功能,开始操作前清空FIFO
    12.     DMA_SPI_RXAH = (u8)((u16)&show_test >> 8); // SPI发送数据存储地址
    13.     DMA_SPI_RXAL = (u8)((u16)&show_test);
    14.     DMA_SPI_AMT = 0xff;
    15.     DMA_SPI_AMTH = 0xff; // 拉满接收大小
    16.     HSSPI_CFG2 |= 0x28;  // 启动高速SPI模式,打开FIFO
    17.     SPITOCR = 0x00;      // 关闭超时中断
    18.     SPITOTH = 0x13;
    19.     SPITOTL = 0x88;
    20.     IAP_TPS = 52;
    21.     HSCLKDIV = 0x00;        //高速时钟1分频,默认2分频
    22. }</font>
    复制代码


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 164 天

    [LV.7]常住居民III

    27

    主题

    1447

    回帖

    4512

    积分

    论坛元老

    积分
    4512
    发表于 2024-3-5 09:34:36 | 显示全部楼层
    王昱顺 发表于 2024-3-5 08:33
    你好,经过测试发现了一些小问题,芯片是STC32F12K54 固件版本号7.4.6U

    现有超时中断产生条件有2个:
    1. 收满一个字节(8位数据)
    2. 超时时间内没有收到新的数据
    判断一下这两个条件能不能都满足,建议先直接使用前面提供的例程测试,正常后再进行修改或移植。

    点评

    谢谢,已经成功实现超时功能了。 问题存在是刚刚启动SPI设备的时候会有随机的几个脉冲。会造成SPI数据错位。 解决办法是初始化的时候通过预置SPI引脚电平为0后,打开普通上拉模式,强制给各个端口拉低到0。此时杂乱  详情 回复 发表于 2024-3-5 10:43
    那有可能是数据漏了一位(整体偏移)导致的等待8位数据收满卡死。 我再仔细检查一下数据的波形,谢谢。 程序就是使用的例程进行移植  详情 回复 发表于 2024-3-5 10:25
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 06:03
  • 签到天数: 185 天

    [LV.7]常住居民III

    0

    主题

    496

    回帖

    615

    积分

    高级会员

    积分
    615
    发表于 2024-3-5 09:53:08 | 显示全部楼层
    看的太仔细了,赞
    靡不有初,鲜克有终
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:45
  • 签到天数: 150 天

    [LV.7]常住居民III

    39

    主题

    420

    回帖

    2260

    积分

    荣誉版主

    积分
    2260
     楼主| 发表于 2024-3-5 10:25:16 | 显示全部楼层
    乘风飞扬 发表于 2024-3-5 09:34
    现有超时中断产生条件有2个:
    1. 收满一个字节(8位数据)
    2. 超时时间内没有收到新的数据

    那有可能是数据漏了一位(整体偏移)导致的等待8位数据收满卡死。
    我再仔细检查一下数据的波形,谢谢。

    程序就是使用的例程进行移植
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:45
  • 签到天数: 150 天

    [LV.7]常住居民III

    39

    主题

    420

    回帖

    2260

    积分

    荣誉版主

    积分
    2260
     楼主| 发表于 2024-3-5 10:43:10 | 显示全部楼层
    本帖最后由 王昱顺 于 2024-3-5 10:44 编辑
    乘风飞扬 发表于 2024-3-5 09:34
    现有超时中断产生条件有2个:
    1. 收满一个字节(8位数据)
    2. 超时时间内没有收到新的数据

    谢谢,已经成功实现超时功能了。

    问题存在是刚刚启动SPI设备的时候会有随机的几个脉冲。会造成SPI数据错位。


    解决办法是初始化的时候通过预置SPI引脚电平为0后,打开普通上拉模式,强制给各个端口拉低到0。此时杂乱数据没法被读入。等通过SCCB配置完设备,启动了SPI_DMA开始读取后,再恢复SPI引脚为高阻模式,开始读取数据。此时的数据就没有错位了,而且超时功能也可以正常使用


    建议把这些判断条件也写入到手册里面的超时部分,这样方便出现问题的时候进行排查
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-17 05:21 , Processed in 0.071693 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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