我正在尝试将I2S麦克风(InvensenseICS43432)连接到运行ArchLinux的RaspberryPi(B+),但失败了。我已在相关的ArchLinuxARM论坛中寻求具体建议,但我的问题实际上比这更笼统:如何调试Linux音频输入问题?我已使用逻辑分析仪验证I2S麦克风正在正确的channel(左)和RaspberryPi的正确引脚中发送敏感数据。I2S麦克风作为“声卡”出现在ALSA下。arecord非常乐意从该设备进行录音,我已经使用alsamixer将该设备的增益提高了30dB。然而,记录文件的所有数据字节都为零。如何在Linux下检查音频数据流、DMA的操作?
我有一个i2c设备,内置在我正在为其开发的板中。它响应单个地址,但第一个字节(有时称为“命令”或“寄存器”)指示所寻址的功能。我可以通过i2cset/get/detect使用用户空间的设备,所以我知道一切正常。设备控制LED(因此应该出现在/sys/class/leds中)。它还有GPIO(因此应该出现在/sys/class/gpio中)。还有六个不同的地方应该显示设备的部分功能。我应该将其编码为:一个i2c客户端模块,并找到一种方法将内容列在/sys中的正确位置。一个平台模块和许多驱动程序模块,它们都(以某种方式)在特定功能的位置共享单个i2c设备及其模块代码。(这是我自late-2
目前我正在为Arm9嵌入式应用程序开发两个驱动程序。它们都是i2c驱动程序,每个都使用一个IO扩展器pcf8575。我已经独立测试了驱动程序,但是当我将它们都编译到内核中并运行我的主应用程序时,我得到了下面的核心转储。它通常不会在第一次驱动程序访问期间发生。这似乎是随机发生的。当我的驱动程序调用i2c驱动程序在I2c总线上传输(i2c_master_send(client,&buff[0],count))时,它肯定会发生。我将附上我的两个驱动程序的主要文件。它们很相似,而且都非常简单。我已经独立地对它们进行了大量测试。通过在两个截然不同的硬件上获得相同的结果,我已经将此排除为硬件问题。
有人可以帮忙将RaspberryPi上的I2C时钟设置为100kHz吗? 最佳答案 AfaikGPIO计时器中断尚未进入稳定内核,但您可以查看http://www.raspberrypi.org/phpBB3/viewtopic.php?f=44&t=7509 关于linux-如何在Linux上将RaspberryPi的I2C时钟配置为100K,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques
我正在尝试使用RaspberryPi作为开发套件通过I2C总线配置SAA6752HS芯片(MPEG-2编码器)。在我不得不写入芯片的地址0xC2之前,这是小菜一碟。对于此任务,我必须使用I2C命令,该命令需要大小为189字节的有效负载。然后我偶然发现了I2C驱动程序内部的32字节限制,由I2C_SMBUS_BLOCK_MAX在/usr/include/linux/i2c.h中定义。不可能强制使用不同的最大限制值。I2Clib周围的所有内容最终都会进入函数i2c_smbus_access,任何超过32字节的请求都会使ioctl返回-1。到目前为止,我不知道如何调试它。staticinli
Thelacklusterresponseheremademewonderthis.我一直背负着一个设备(AnalogDevices525x)那(来自数据表,第16页):disablestheI2Cinterfaceduringtheinternal[EEPROM]writecycle.这似乎不公平,因为“我现在要离开沙发了,所以暂时不要使用它,因为我让一个人撕裂了座垫”。老实说,为什么那会是我的问题?无论如何,数据表建议确认轮询是答案-进入Linux内核...LinuxGPIObitbashedI2C驱动程序是否提供执行此操作的机制?本质上发送一个地址写入位设置并继续这样做,直到出现
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion如何为i2c设备制作一个具有打开、关闭、ioctl等功能的字符设备?过去两周我一直在寻找有关它的信息,但找不到任何有用的信息。我在EssentialLinuxDeviceDrivers中找到了一些信息,但它是为2.6内核编写的,我使用的是3.4.79(我正在尝试为cubiandisr上的cubieboard2编写这个驱动程序)所以这本书有很多弃用的功能,我试图像那里那样写我的驱动程序,但它仍然不起作用(当
我的平板电脑上有一个用于触摸屏的goodix芯片,即使我为它编译了最新的内核模块,也无法正常工作。我使用的正是这个内核版本和打过补丁的驱动程序:https://github.com/NimbleX/kernel首先,该芯片的图片如下:DSDT表包含有关触摸屏的信息。据我所知,触摸屏是通过I2C串行接口(interface)连接的,但lshw显示*-serial未声明。不过,我可以看到SMBusController的i2c_i801模块已加载。在Aleksei的帮助下,我能够确定触摸屏已连接到i2c-1总线,并且Controller必须使用0x14或0x5d地址。不幸的是,i2cde
我正在尝试读取/写入通过地址0b1010011上的I2C总线连接的FM24CL64-GTRFRAM芯片。当我尝试写入3个字节(数据地址2个字节,+数据一个字节)时,我收到一条内核消息([12406.360000]i2c-adapteri2c-0:sendbytes:NAKbailout。),以及写入返回!=3。请参见下面的代码:#include#include#include#includeintfile;charfilename[20];intaddr=0x53;//0b1010011;/*TheI2Caddress*/uint16_tdataAddr=0x1234;uint8_tv
或者,“在for循环中声明多个变量是禁止的”?!我原来的代码是for(inti=1,inti2=1;i2我想遍历前这么多的方格,想要数字和它的方格,停止条件取决于方格。这段代码似乎是最清晰的意图表达,但它是无效的。我可以想出十几种方法来解决这个问题,所以我不是在寻找最好的选择,而是为了更深入地理解为什么这是无效的。如果你愿意的话,有点语言律师。我已经足够大,可以记住您何时必须在函数开头声明所有变量,所以我很感激for(inti=0;....语法。阅读它看起来你只能在for()语句的第一部分有一个类型声明。所以你可以做for(inti=0,j=0;...甚至有点巴洛克风格for(inti