问题标签 [psoc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
141 浏览

memory - 无法使用高 MSB 地址位读取/写入 SRAM

我正在使用具有 16 位数据和 18 位地址的外部 sram (256kbx16b),当我使用 msb(地址位 16 和 17)访问任何内容时,我无法读取/写入外部 sram。

访问不需要这些咬的任何东西(任何带有 addr 位 0-15 的东西)都可以正常工作。

我发现当我断开 16 和 17 addr 位并将它们连接到高或低时它工作正常,但是当这些位连接到 PSoC 5lp 并被 emif 组件(外部存储器接口)选择时,它会显示随机静态值,我期待一组特定的变化值。

我还验证了来自 psoc 的地址位 16 和 17 的信号,它们的行为似乎与任何其他地址位的行为一样。如果我断开 16 和 17 线,然后将它们单独插入,则 psoc 上寻址第 16 位或第 17 位的任何端口都会冻结我的液晶显示器上的数据。

到 ext sram 的传输是通过 dma 完成的,而读取是直接使用指向内存的指针完成的,这对于以前的 sram 来说效果很好,尽管它们是 1Mbx8b。

这在 gpio 引脚上是一致的。

我正在使用 512kbx16 SRAM:CY7C1041D

sram 是异步的。

再次使用 PSoC 读/写适用于 sram 上不使用高 2 msb 寻址的所有地址。

有谁知道发生了什么?

0 投票
3 回答
468 浏览

c# - 从数据中去除噪声和极值?

我有一个程序可以从 PSoC 上的 ADC 串行读取数据。

数字以格式发送<uint16>,包括“<”和“>”符号,以二进制格式传输,00111100 XXXXXXXX XXXXXXXX 00111110其中“X”构成 16 位无符号整数。

有时读取不会很好,程序使用“>”符号的二进制数据作为其数字的一部分,导致出现故障,如 2500 个样本的截图所示(忽略样本 800 到 1500 之间的下降,即我在玩 ADC 输入吗):

截屏

您可以清楚地看到,故障导致数据在每次发生时都对大致相同的值进行采样。

数据每秒发送 10 次,所以我计划做的是取 10 个样本,消除任何毛刺(值远离其他样本的地方),然后平均剩余的值以稍微平滑曲线. 输出可以从 0 到 50000+,所以我不能只删除低于某个数字的值。

我不确定如何删除远离 10 个样本组中其他值范围的值,因为可能存在两个样本受此故障影响的情况。也许还有其他方法可以修复这些故障数据,而不仅仅是解决它!

这样做的最佳方法是什么?到目前为止,这是我的代码(这是在 DataReceivedEvent 方法中):

0 投票
2 回答
1433 浏览

arduino - 使用 I2C、PSOC 开始发送和接收字节

我是 PSoC 板的新手,我正在尝试从数字罗盘读取 x、y、z 值,但在使用罗盘本身开始传输时遇到问题。

我在这里在线找到了一些 Arduino 教程,但由于 PSoC 没有库,我无法复制代码。

另外我在这里阅读了 HMC5883L 数据表,我想将字节写入指南针并获取值,但我无法接收任何内容。我收到的所有值都是零,这可能是由于从错误地址读取值引起的。

希望尽快得到您的答复。

0 投票
0 回答
111 浏览

c - 我已经构建了我的项目,但 PSoC 3.3 向我显示了一些可能已启用的功能已禁用

我在 Cypress PSoC 和外部从机之间使用 I2C 通信。我已经在我的 TopDesign 文件中为 I2C 分配了 SCB 块,但是,在 C 中编程编译器不允许我使用函数 SCB_I2CMasterReadBuf(etc etc etc),因为它说它没有被声明(但它可能是,因为我正在使用正确的块)。

我该如何解决这个问题?问候,胡里奥。

0 投票
2 回答
6497 浏览

nfc - ISO/IEC 14443a CRC 计算

大家好,我正在为我的 NFC 项目完成固件的最后一部分。我正在尝试与使用 NXP 的 MF0ULx1 MIFARE Ultralight EV1 - 非接触式票证 IC 的 AD-740 NFC 标签通信。我使用的 NFC 阅读器是 NXP 的 CLRC663。我正在通过 SPI 使用 PSOC5LP 设备控制 NFC 阅读器。

现在你已经掌握了所有的背景信息,我现在要问我的问题。

对于这种特殊的NXP 读取方法,我需要将我的 Cmd 和 Addr 编码为长度为 2 个字节的 CRC。我可以链接到的数据表引用了 ISO/IEC 14443。在 Google 中搜索它会将我带到 Wikipedia 页面,然后显示 PDF 的四个部分。我假设我需要第 4 节传输协议部分。唯一的问题是这个 PDF 被付费墙挡住了。这是故意的吗??

在互联网上四处搜寻,我发现了一些代码示例,这些示例可能会阻止我购买 170 美元的 PDF 来查看多项式......

代码示例 1 - 我可以在评论中发布源链接。没有代表在主要帖子中执行此操作。

代码示例 2 - 我可以在评论中发布源链接。没有代表在主要帖子中执行此操作。

现在关于所有这些信息的最后一个问题......可以安全地假设:

CRC多项式为:0x6363

种子值为:0x00FF

可以在此处看到视觉表示

0 投票
1 回答
414 浏览

interface - 从 USB 鼠标读取数据到微控制器

正如标题所说,我有一个 USB 鼠标,我不想连接到微控制器,更具体地说是 PSoC 4。我希望能够读取它的坐标(x,y)。

这有可能做到吗,还是只是太复杂了?

此致

0 投票
1 回答
126 浏览

mouse - 使用 PSoC 4 中断

我目前正在从 PS/2 鼠标读取值,它运行良好!- 当鼠标发送时钟信号(下降沿)时,我试图只从鼠标读取,所以我试图使用中断。到目前为止,这是我的一些代码:

中断处理程序:

这个中断给了我以下结果,这是完美的: 在此处输入图像描述

我将鼠标向右移动,它输出了正确的东西,但是我不能在主 for 循环中做任何事情。例如,如果我在主循环中的显示器上打印一些东西,什么都不会发生,但它仍然可以从鼠标读取数据,只要鼠标发送..

我发现你应该使用这个函数清除中断:

当我在中断处理程序中编写这个函数时,我会得到这个: 在此处输入图像描述

这与之前的动作相同,但如您所见,数据已损坏。但是,只要不调用中断,我就可以在主循环中执行操作。

在处理中断方面我做错了什么?

0 投票
1 回答
111 浏览

bluetooth-lowenergy - 使用初始带外消息连接到 BLE

我正在设计两个 BLE 设备,一个中央设备和外围设备。(使用 PSoC 4 BLE,没关系)

在一个狭小的空间内会有很多这样的设备,范围内可能多达 8 个,但是数百个外围设备和数十个中央设备都来来往往,没有特定的韵律或原因,用户想要配对一个中央/外围设备在任何给定时间。

我还有一项不相关的技术,它使用户可以很容易地将数据块从中心移动到他们选择的外围。我相信这将使配对在大多数但不是所有情况下变得更加容易。

我认为非 BLE blob 将至少包含中央的 mac 地址,并且可能包含随机生成的 pin 或共享密钥。因为 blob 只能从中心到外围设备,所以接收外围设备实际上是唯一知道应该连接的两个设备的地址的设备。

但是,据我了解,外围设备无法进行传出连接。我不能交换角色,因为我仍然需要 BLE 搜索才能以传统方式工作。

我可以想出很多方法来完成这项工作,但我很想听听那些与 BLE 合作了足够长的时间以知道什么最适合的人的意见(或者如果我对某些假设有误)。

我正在处理的一些限制:

  • 外围设备由电池供电。
  • 通常的搜索和配对方法也必须仍然有效。

我自己的半生不熟的想法:

  • 使外围设备也可以成为中心设备,但这会带来更多的细微差别和复杂性吗?
  • 外设广播,“谁有X mac地址,请连接我”
  • 在广告包中放入类似的信息,提高广告率。
  • 与上述类似的定向广告?
0 投票
1 回答
2597 浏览

c - 定时器中断和 UART 接收中断

我是一个编程新手,我无法让我的中断按照我希望它们为我的应用程序工作的方式工作。我想通过 UART 向 PSoC 发送串行数据,每秒存储一次值,然后回显存储的值。我正在使用 RX 中断(RX FIFO 不为空,优先级 2)和带有 TC 的定时器中断(优先级 3)。附件是 TopDesign 配置。目前,我正试图让这个代码工作(只是一个示例代码,看看我是否能让中断正常工作)。我向 PSoC 发送了一个包含字符“o”的字符串,我应该只读取“o”和“-”,但代码总是卡在其中一个中断中,而另一个则永远无法工作。谁能告诉我我做错了什么?非常感激!该板为 CY8CKIT-042。

0 投票
0 回答
43 浏览

psoc - 关闭 Psoc 控制寄存器超过 3 秒

我是电子和 psoc 方面的新手,所以请原谅我……我有一个应用程序使用具有 7 个输出的控制寄存器……据我所知,当我打电话时,I_Control_Reg_Write(0)我将其关闭,如果我打电话I_Control_Reg_Read()首先并使用我从中读取的值并调用I_Control_Reg_Write(value)它将重新打开此控制寄存器?

为了让您更深入地了解我在做什么......当程序第一次启动时,它正在这样做......

然后当关闭寄存器时,我正在这样做......

打开它,

如果我关闭寄存器 3 秒,然后打开 1 秒,上面的代码块会起作用......但是一旦我把它关闭超过 3 秒,我似乎无法重新打开它...... ..