288|17

680

帖子

0

TA的资源

纯净的硅(高级)

大佬们帮我看看我这MicroPython代码有什么问题 [复制链接]

 

要做的是用ESP32S3作为主机与一个安全芯片进行SPI通信,目前的问题是:数据成功发出,安全芯片也成功返回数据,但其返回的0x55我ESP没有收到

 

芯片资料给出的通信流程如下图

未命名绘图.png
 
我的代码如下,测试用代码,大佬们帮看看有什么问题
from machine import Pin, SPI
from time import sleep_us

class myESAM():
    def __init__(self):
        self.sck = Pin(11, Pin.PULL_UP)
        self.mosi = Pin(13, Pin.PULL_UP)
        self.miso = Pin(12)
        self.spi = SPI(1, sck=self.sck, mosi=self.mosi, miso=self.miso, baudrate=5000000,  polarity=1, phase=1)
        self.nss = Pin(10, Pin.OUT, Pin.PULL_UP)
        
    def start(self):
        _thread.start_new_thread(self.read,())
        self.nss.value(0)
        sleep_us(100)
        buf = [0x55, 0x80, 0x36, 0x00, 0xff, 0x00, 0x00]
        self.spi.write(buf)
        sleep_us(5)
        self.nss.value(1)
        sleep_us(10)
        self.nss.value(0)
        sleep_us(100)
		while True:
            inBuf = bytearray(1)
            self.spi.readinto(inBuf)
            if inBuf != b'\x55':
                sleep_us(20)
                continue
            print(inBuf)
            inBuf = bytearray(20)
            self.spi.readinto(inBuf)
            print(inBuf)
            sleep_us(5)
            self.nss.value(1)
            sleep_us(10)
            break


m = myESAM()
m.start()


 

 

最新回复

ESP32好像时钟源基本不用配置,那就不知道是什么问题了   详情 回复 发表于 前天 10:51

回复
举报

680

帖子

0

TA的资源

纯净的硅(高级)

安全芯片 SPI 工作方式采用 MODE 3,时钟极性(CPOL=1),串行同步时钟的空闲状态为高电平,时钟相位(CPHA=1),在串行同步时钟的下降沿转换数据,上升沿采样数据。

支持频率为5Mhz-20Mhz


回复

680

帖子

0

TA的资源

纯净的硅(高级)

大召唤术 @dcexpert  

看看是我的写法有问题吗,第一次用ESP的SPI,搞不懂啊


回复

6525

帖子

2

TA的资源

版主

片选需要在通信过程中拉高一次?

点评

这个芯片特殊,比较奇怪,不过按他的要求步骤走,他确实返回数据了,可我没接到  详情 回复 发表于 2024-9-30 09:02

回复

1万

帖子

25

TA的资源

版主

不清楚你芯片的时序要求,可以试试 spi.write_readinto(txdata, rxdata) 函数,写入同时读取。

点评

忘了加时序图,现补上,发送是同时读取也试过,读回来的全是0 紫色为 MOSI、黄色为 SSN、绿色为 CLK、红色为 MISO [attachimg]848042[/attachimg]    详情 回复 发表于 2024-9-30 09:00

回复

680

帖子

0

TA的资源

纯净的硅(高级)

dcexpert 发表于 2024-9-29 20:48 不清楚你芯片的时序要求,可以试试 spi.write_readinto(txdata, rxdata) 函数,写入同时读取。

忘了加时序图,现补上,发送是同时读取也试过,读回来的全是0

紫色为 MOSI、黄色为 SSN、绿色为 CLK、红色为 MISO
20240930085926133.png

 

点评

如果有波形而读取不到数据,可以多检查IO设置、波特率、spi相位等参数。  详情 回复 发表于 2024-9-30 10:48

回复

680

帖子

0

TA的资源

纯净的硅(高级)

wangerxian 发表于 2024-9-29 17:38 片选需要在通信过程中拉高一次?

这个芯片特殊,比较奇怪,不过按他的要求步骤走,他确实返回数据了,可我没接到

点评

是通过抓波形确认它确实返回数据吗?  详情 回复 发表于 2024-9-30 09:37

回复

6525

帖子

2

TA的资源

版主

极限零 发表于 2024-9-30 09:02 这个芯片特殊,比较奇怪,不过按他的要求步骤走,他确实返回数据了,可我没接到

是通过抓波形确认它确实返回数据吗?

点评

是的,但是我这只有单通道的示波器,所以目前时序还搞不清楚  详情 回复 发表于 2024-9-30 09:52

回复

680

帖子

0

TA的资源

纯净的硅(高级)

wangerxian 发表于 2024-9-30 09:37 是通过抓波形确认它确实返回数据吗?

是的,但是我这只有单通道的示波器,所以目前时序还搞不清楚

点评

可以搞个便宜的逻辑分析仪,几十块,抓时许还是很有用的。  详情 回复 发表于 2024-9-30 10:22

回复

6525

帖子

2

TA的资源

版主

极限零 发表于 2024-9-30 09:52 是的,但是我这只有单通道的示波器,所以目前时序还搞不清楚

可以搞个便宜的逻辑分析仪,几十块,抓时许还是很有用的。

点评

已经提了,公司买东西时间比较长。。。。。  详情 回复 发表于 2024-9-30 10:30

回复

680

帖子

0

TA的资源

纯净的硅(高级)

wangerxian 发表于 2024-9-30 10:22 可以搞个便宜的逻辑分析仪,几十块,抓时许还是很有用的。

已经提了,公司买东西时间比较长。。。。。

点评

那盲猜不好猜问题,micropython可以调试吗?  详情 回复 发表于 2024-9-30 11:29

回复

1万

帖子

25

TA的资源

版主

极限零 发表于 2024-9-30 09:00 忘了加时序图,现补上,发送是同时读取也试过,读回来的全是0 紫色为 MOSI、黄色为 SSN、绿色为 CLK、 ...

如果有波形而读取不到数据,可以多检查IO设置、波特率、spi相位等参数。

点评

下午去隔壁楼借了个示波器,搞明白了,我用的是SPI1,就是HSPI,而管脚是自定义的,只有第一次运行时,完全正常,其后只要不改SPI初始化的代码,不管是怎样都不能再收到数据,掉电重启也不行 我改用SPI2后,就完  详情 回复 发表于 2024-9-30 14:35

回复

6525

帖子

2

TA的资源

版主

极限零 发表于 2024-9-30 10:30 已经提了,公司买东西时间比较长。。。。。

那盲猜不好猜问题,micropython可以调试吗?


回复

680

帖子

0

TA的资源

纯净的硅(高级)

dcexpert 发表于 2024-9-30 10:48 如果有波形而读取不到数据,可以多检查IO设置、波特率、spi相位等参数。

下午去隔壁楼借了个示波器,搞明白了,我用的是SPI1,就是HSPI,而管脚是自定义的,只有第一次运行时,完全正常,其后只要不改SPI初始化的代码,不管是怎样都不能再收到数据,掉电重启也不行

我改用SPI2后,就完全正常了

不知道是不是BUG,而且用SPI1时,设置的频率与实际频率也不符,我设置的5MHz,示波器看只有4MHz,后来我设成10MHz,示波器只有9MHz

感谢 @dcexpert   @wangerxian

点评

看来是固件的bug  详情 回复 发表于 2024-9-30 15:20

回复

1万

帖子

25

TA的资源

版主

极限零 发表于 2024-9-30 14:35 下午去隔壁楼借了个示波器,搞明白了,我用的是SPI1,就是HSPI,而管脚是自定义的,只有第一次运行时,完 ...

看来是固件的bug


回复

6525

帖子

2

TA的资源

版主

【设置的频率与实际频率也不符,我设置的5MHz,示波器看只有4MHz】有没可能是SPI1用的时钟源不同?

点评

但是我SPI2又正常,我是ESP32S3-WROOM-1U,这里有好几个时钟源吗  详情 回复 发表于 2024-9-30 15:26

回复

680

帖子

0

TA的资源

纯净的硅(高级)

wangerxian 发表于 2024-9-30 15:22 【设置的频率与实际频率也不符,我设置的5MHz,示波器看只有4MHz】有没可能是SPI1用的时钟源不同?

但是我SPI2又正常,我是ESP32S3-WROOM-1U,这里有好几个时钟源吗

点评

ESP32好像时钟源基本不用配置,那就不知道是什么问题了  详情 回复 发表于 前天 10:51

回复

6525

帖子

2

TA的资源

版主

极限零 发表于 2024-9-30 15:26 但是我SPI2又正常,我是ESP32S3-WROOM-1U,这里有好几个时钟源吗

ESP32好像时钟源基本不用配置,那就不知道是什么问题了


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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表