问题标签 [pic32]

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 投票
2 回答
1291 浏览

c - PIC32错误的SPI MOSI

我正在尝试开发一个接口 SPI,我从一个简单的配置开始。问题是 SCK 似乎工作正常,但 MOSI 不工作。这是我的代码和我的测试逻辑测试器。

抱歉,我无法为我的声誉点发布逻辑分析器图像。

我一直在尝试发送“A”(填充缓冲区传输)。那就是向SPI1发送数据。

我正在从我的 Microchip 扩展板 I/O 读取 SPI1,其中 SPI1 位于引脚 41 和 43(41 SCK 和 43 SDO)。在 SPI2 中,pin 23 和 25,显然我没有任何流量。

有谁知道这个错误?

非常感谢

0 投票
1 回答
380 浏览

arduino - pic32 和 MPL3115A2 高度/压力传感器之间的 I2C 通信

我正在尝试做一些非常简单的事情,但我在让它工作时遇到了一些麻烦。我正在使用 MPL3115A2 高度/压力传感器和 pic32 uC32 板,我正在尝试使用 I2C 在两者之间进行通信。(uC32板与arduino足够相似,在编码方面几乎相同)。

我正在使用线库,我只是想从 MPL3115A2 读取寄存器 0x​​0C,它应该给我设备 ID。

这是一个代码片段(定义在代码的顶部,其余的在主循环中):

所以我从地址 0x60 开始传输(来自数据表:标准 7 位 I2C 从机地址为 0x60 或 1100000。8 位读取为 0xC1,8 位写入为 0xC0。)。然后我发送 0x0C 因为那是我要访问的寄存器。然后我结束传输,并从地址 0x60 请求 1 个字节,将该位接收到一个 8 位变量中,然后打印它。

我遇到的问题是,当我打印它时,我只得到 0。我没有得到设备 ID,只有 0。无论我尝试读取什么寄存器,我都得到 0。

在过去的几天里,我一直在用头撞墙,试图让它发挥作用。我附上了我用逻辑分析仪捕获的东西,以及我一直试图访问的 MPL3115A2 数据表中的寄存器列表。

使用逻辑分析仪,我可以看到时钟和数据线。时钟似乎正常,数据线给了我以下信息:

这一切对我来说似乎都是正确的(192 和 193 来自 8 位写入和读取为 0xC0 和 0xC1),除了“0”。我应该得到设备 ID,而不是 0。

感谢您对此的任何帮助!

0 投票
1 回答
984 浏览

gps - GPS ublox-6 neo6 使用 SPI 与微控制器通信

我正在使用 GPS 模块 ublox-6 neo6 并尝试使用 SPI 从 pic32 微控制器中提取数据。我正在使用 GPIO 引脚来执行此操作,因此 SPI 库不在桌面上。

显然,我需要做的就是发送 0xFF 并读取同时返回的内容以获取数据。当我自己尝试对其进行位敲击时,我发送了 0xFF,但我从 GPS 收到的只是 0xFF。

我也尝试过实现 SoftSPI 库,因为我担心我试图发送和接收信息太快,但同样,当我发送 0xFF 时,我仍然会从 GPS 收到 0xFF。

这是我的代码:

现在对于 SoftSPI 代码:

在这两种情况下,每当我尝试发送 0xFF 时,我都会收到 0xFF。有趣的是,当我向它发送不是 0xFF 的垃圾时,我收到了实际的 NMEA 字符串,但是这些 NMEA 字符串中没有实际数据,它看起来像:

$GPGLL,,,,,,,V*32

$GPGSA,,,,,A*49

ETC..

^这些示例只是从内存中提取的,因此可能与我返回的内容不完全相同,但非常相似。

知道什么可能导致这个问题吗?该设备的数据表只是说如果您没有要发送的任何内容,则发送 0xFF,然后读取您返回的数据。我尝试通过向设备发送 UBX 代码将设备重置为出厂默认设置,但这根本没有帮助。

任何建议或信息将不胜感激。

0 投票
1 回答
803 浏览

pic - MPLAB 与 MPLABX 加载程序文件

MPLAB 使用 procdefs.ld 作为加载程序配置文件:

但是当我尝试在 MPLABX 中使用同一个文件时,我得到了多个错误:

如何为 MPLABX 定义加载程序配置文件?mplabx 需要做哪些改变?

0 投票
2 回答
440 浏览

microcontroller - PIC 32 TTL 通信

为了构建 I2C 间谍,我得到了 PIC32mx795f512L,我将在 SDA、SCL 和 GND 上连接 3 根线,然后我必须检测发送的数据。这部分没问题。现在,一旦我有了数据,我必须通过 RX、TX 将其发送到计算机(实际上,我将其发送到将其转换为 RS232 的适配器),这就是我的问题。

我真的不知道如何初始化这种通信。现在我把:

通过检查数据表,但我实际上不知道是否设置了所需的一切。尽管如此,我还是不知道如何通过 TX 发送数据。我发现这个话题 说:

要在 UART 上进行一些字符输出(本示例中的 a -),只需编写以下代码:

但我找不到使用“a”的位置。

所以请,如果有人觉得可以帮助我,请随时这样做。

0 投票
0 回答
438 浏览

c - 使用 free() 后,在 malloc 调用上 PIC32 崩溃(错误指针)

我正在从事一个涉及 PIC32MX220f032b 的项目,在该项目中,我必须使用动态内存分配来在链表中声明未知数量的结构。

malloc 调用和一切工作正常,直到我继续实施数据的删除。这个想法是分配一些结构并用数据填充它们(一些通过指针)。在某个时间点,所有已知的结构都被释放并声明了新的结构。

仅分配的第一个测试工作了大约三轮,直到内存不足(可以理解)。但是当我实现一个函数来释放数据结构时,malloc 不再起作用。它的函数调用使图片崩溃,并将其发送到带有指针错误的异常处理程序。但我不知道为什么...

我使用以下结构:

在代码中,我使用 malloc 分配结构和文件名指针:

在分配和使用所有内容之后(注意:这个功能就像一个魅力)我想释放所有数据字段并重新开始:

我无法测试它的功能,因为据我所知,免费不提供任何返回值,并且看不到当前的内存使用情况。直到此时,图片仍在运行。但是当我尝试再次分配内存时,图片崩溃(异常处理程序调用原因为 0x07:错误指针)。问题似乎源于 malloc 函数调用内部:

效果不佳(因此函数参数或其他内容没有错误)。

你知道这可能是什么原因吗?

0 投票
0 回答
1034 浏览

microcontroller - TX/UART 发送错误数据

我实际上正在处理一个PIC32MX795F512L和一个小项目,我需要通过将数据(现在只有 0 或 1)发送MPLABX V2.10到将其转换为 USB 的“东西”。XC32RX/TX

问题是我收到奇怪的东西

uart_send_data 函数是:

然后 uart_put_c:

所以,我在 TX1 上发送 1 或 a。但是,当我查看我在 USB 端口上接收到的内容时(感谢 Docklight),我得到了 ascii:ð |ð,十六进制:0C F0 00 F0 0C 等...那么,有人知道我的问题出在哪里吗?来自(哪里?

提前谢谢。

干杯

0 投票
1 回答
299 浏览

interrupt - 中断和使用UART

我在一个项目上苦苦挣扎,所以我来了。

我的问题是通过 UART 发送数据。事实上,这不是问题,因为我成功发送数据,这要归功于:

而且我接收良好。

但是,我想使用 ChangeNotice 中断。它的代码是这样的,它可以工作:

但是,当我同时做这两件事时,它正在发送一些东西,但根本不是我要寻找的东西,它正在发送(以十六进制表示)000 224 224 000 224 224 00 224 224 000。而不是每个字节接收字节,我每 14 个字节接收 14 个字节。

所以,我虽然 UART 带来了中断,但我试图通过使用asm("di");or IEC0bits.U1TXIE=0;or来禁用它,IEC0bits.U1TXIE=0;但没有任何影响......所以,如果有人知道我为什么会遇到这个问题,我会很高兴 =D

干杯。

0 投票
1 回答
1037 浏览

c - pic32 在 spi 中只接收 1 个字节

我可能正在努力解决一个非常简单的问题。我有一个赛普拉斯 CY8 控制器作为 SPI 主机,它应该在从机模式下与 PIC32mx 通信以交换数据包。

但是,我什至无法修复从主机到从机的多个字节的简单传输。我已经将柏树设置为传输一个递增值(0-255)的字符,中间有一个暂停(和从属选择切换)。图片应该读取传入的字节,然后通过 uart 将其打印到我的电脑(uart 连接有效)。但是图片只打印它连续接收的第一个字符,而不是更新它。如果我检查我的逻辑嗅探器,赛普拉斯确实会发送递增值,并且图片会将它们通过 MISO 线转发回(看起来移位缓冲区没有被清除)。

这可能是什么?

没有附上图片的柏树给出了正确的输出: https : //dl.dropboxusercontent.com/u/3264324/Schermafdruk%202015-07-28%2015.43.28.png 附上图片后,它通过 MISO 中继数据: https: //dl.dropboxusercontent.com/u/3264324/Schermafdruk%202015-07-28%2015.43.45.png

这是我(现在)非常基本的代码来测试它:

由于我确实收到了一个字符并且 spi 数据不断地转发回柏树,我认为在 PIC 中读取/清除 spi 数据结构时出现了问题。但我不知道为什么。当我在数据表中阅读时,从 SPI2BUFF 读取数据会为我提供接收到的数据,并清除读取标志以便可以接收到新数据,但看起来这不会发生......

有人可以为我照亮这个吗?

在此先感谢

0 投票
0 回答
1071 浏览

dns - 多播 DNS 问题

经过多日无情的挖掘和寻找灵感,感觉有点失落……

到目前为止的故事:-

  1. 我有一个基于 Microchip PIC32 的 wifi-dev 板,运行 TCP/IP 堆栈 v5.36。
  2. 启动后,当在浏览器中请求默认的“mchp.local”域名时,应用程序运行良好。Web 浏览器每秒从 PIC 上的嵌入式 Web 服务器正确接收更新。
  3. 然而,在不确定的时间(通常大约 1 小时左右)之后,“mchp.local”页面超时并且浏览器报告

'ERR_NAME_NOT_RESOLVED:找不到位于 mchp.local 的服务器。因为 DNS 查找失败。

  1. 然而,我可以通过其相应的 IP 地址(在本例中为 172.16.15.103)访问该应用程序,并且我看到该应用程序运行良好。
  2. 我还看到 main() 例程中的无限循环正在按预期运行,并且当我仅使用 IP 地址请求页面时,Web 服务器正在响应更改。
  3. 我已经在 Windows 和 Mac 机器上使用 Chrome 进行了测试——同样的问题。
  4. 我尝试使用 Packet Peeper(Mac OS X 的免费网络数据包分析器)过滤掉所有不在 UDP 端口 5353 上的消息(根据 RFC 6762),但我没有发现任何有用的信息。
  5. 我对代码进行了跟踪调试,发现 mDNS 状态机在应用程序停止响应 DNS“ERR_NAME_NOT_RESOLVED”之前和之后都处于防御模式。
  6. 我怀疑问题出在多播 DNS 模块上,但到目前为止我的发现并不能帮助我找出根本原因。

有什么线索吗?我接下来应该看哪里?

我的环境:Mac OS X 10.9.5 (Mavericks) 浏览器:Chrome v.44 Embedded Kit uC:Microchip PIC32MX695F512H Embedded Kit WiFi 接口:Microchip MRF24WB0MA 开发工具:PICKit3、MPLAB X IDE v2.25、Packet Peeper 2014-06-15