AM3359 I2C 音频驱动问题

静观世界风云 2013-04-24 10:39:19
各位好,我在TI的 am335x平台上调试基于I2C的音频驱动。
碰到问题,请求大家帮忙

我的环境如下:
CPU: am3359
EVM包 psp04.06.00.07
音频芯片是:TLV320AIC3106RGZ


在调试音频过程中,碰到问题,过程描述如下:

首先,修改board-support/linux-3.2-psp04.06.00.07.sdk/arch/arm/mach-omap2/board-am33txevm.c
增加以下代码

/* Module pin mux for mcasp0 */
static struct pinmux_config mcasp0_pin_mux[] = {
{"mcasp0_aclkx.mcasp0_aclkx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_fsx.mcasp0_fsx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_axr0.mcasp0_axr0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_ahclkr.mcasp0_axr2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{NULL, 0},
};

static u8 am335x_iis_serializer_direction0[] = {
TX_MODE, INACTIVE_MODE, RX_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
};


static struct snd_platform_data am335x_evm_snd_data0 = {
.tx_dma_offset = 0x46000000, /* McASP0 */
.rx_dma_offset = 0x46000000,
.op_mode = DAVINCI_MCASP_IIS_MODE,
.num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction0),
.tdm_slots = 2,
.serial_dir = am335x_iis_serializer_direction0,
.asp_chan_q = EVENTQ_2,
.version = MCASP_VERSION_3,
.txnumevt = 1,
.rxnumevt = 1,
};


static void mcasp0_init(int evm_id, int profile)
{
/* Configure McASP */
setup_pin_mux(mcasp0_pin_mux);
am335x_register_mcasp(&am335x_evm_snd_data0, 0);
return;
}

static struct evm_dev_cfg beaglebone_dev_cfg[] = {
......
{mcasp0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
....
}


其次修改:sound/soc/davinci/davinci-evm.c
static struct snd_soc_dai_link am335x_evm_dai = {
.name = "TLV320AIC3X",
.stream_name = "AIC3X",
.cpu_dai_name = "davinci-mcasp.0", //1-->0
.codec_dai_name = "tlv320aic3x-hifi",
.codec_name = "tlv320aic3x-codec.3-001b", //2-->1
.platform_name = "davinci-pcm-audio",
.init = evm_aic3x_init,
.ops = &evm_ops,
};



输出信息:
[ 1.586273] usbhid: USB HID core driver
[ 1.591125] usbcore: registered new interface driver snd-usb-audio
[ 1.599212] tlv320aic3x-codec 3-001b: ---wxj---aic3x_i2c_probe()
[ 1.605529] tlv320aic3x-codec 3-001b: ---wxj---aic3x->control_type = SND_SOC_I2C
[ 1.613281] tlv320aic3x-codec 3-001b: ---wxj---snd_soc_register_codec return 0
[ 1.625732] soc-audio soc-audio.0: binding TLV320AIC3X at idx 0
[ 1.631927] ---wxj---soc-core.c soc_bind_dai_link(), binding TLV320AIC3X at idx 0
[ 1.639770] soc-audio soc-audio.0: find CPU DAI from registered DAIs: dai_name davinci-mcasp.0
[ 1.648803] soc-audio soc-audio.0: CODEC found, so find CODEC DAI from registered DAIs from this CODEC: dai_name davinci-mcasp.0
[ 1.660888] soc-audio soc-audio.0: then find one from the set of registered platforms: platform_name davinci-pcm-audio
[ 1.672088] ---wxj---soc-core.c soc_bind_dai_link(),rtd->complete=1, return 1
[ 1.679656] tlv320aic3x-codec 3-001b: ---wxj---tlv320aic3x.c aic3x_probe()
[ 1.686889] tlv320aic3x-codec 3-001b: Failed to get supply 'IOVDD': -19
[ 1.693817] tlv320aic3x-codec 3-001b: Failed to request supplies: -19
[ 1.700561] tlv320aic3x-codec 3-001b: asoc: failed to probe CODEC tlv320aic3x-codec.3-001b: -19
[ 1.709716] asoc: failed to instantiate card AM335X EVM: -19
[ 1.715698] ALSA device list:
[ 1.718811] No soundcards found.


音频芯片的供电部分硬件工程师测量正常。

...全文
1827 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_23678887 2015-05-11
  • 打赏
  • 举报
回复
你好: 希望看到哦阿能回复下,我也遇到了和你一样的问题,在用aplay 播放wav文件时,系统崩溃了,请问你的问题解决了吗?
samyoju 2013-07-15
  • 打赏
  • 举报
回复
引用 楼主 wxjggwxjgg 的回复:
各位好,我在TI的 am335x平台上调试基于I2C的音频驱动。 碰到问题,请求大家帮忙 我的环境如下: CPU: am3359 EVM包 psp04.06.00.07 音频芯片是:TLV320AIC3106RGZ 在调试音频过程中,碰到问题,过程描述如下: 首先,修改board-support/linux-3.2-psp04.06.00.07.sdk/arch/arm/mach-omap2/board-am33txevm.c 增加以下代码 /* Module pin mux for mcasp0 */ static struct pinmux_config mcasp0_pin_mux[] = { {"mcasp0_aclkx.mcasp0_aclkx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, {"mcasp0_fsx.mcasp0_fsx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, {"mcasp0_axr0.mcasp0_axr0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, {"mcasp0_ahclkr.mcasp0_axr2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, {NULL, 0}, }; static u8 am335x_iis_serializer_direction0[] = { TX_MODE, INACTIVE_MODE, RX_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, }; static struct snd_platform_data am335x_evm_snd_data0 = { .tx_dma_offset = 0x46000000, /* McASP0 */ .rx_dma_offset = 0x46000000, .op_mode = DAVINCI_MCASP_IIS_MODE, .num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction0), .tdm_slots = 2, .serial_dir = am335x_iis_serializer_direction0, .asp_chan_q = EVENTQ_2, .version = MCASP_VERSION_3, .txnumevt = 1, .rxnumevt = 1, }; static void mcasp0_init(int evm_id, int profile) { /* Configure McASP */ setup_pin_mux(mcasp0_pin_mux); am335x_register_mcasp(&am335x_evm_snd_data0, 0); return; } static struct evm_dev_cfg beaglebone_dev_cfg[] = { ...... {mcasp0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, .... } 其次修改:sound/soc/davinci/davinci-evm.c static struct snd_soc_dai_link am335x_evm_dai = { .name = "TLV320AIC3X", .stream_name = "AIC3X", .cpu_dai_name = "davinci-mcasp.0", //1-->0 .codec_dai_name = "tlv320aic3x-hifi", .codec_name = "tlv320aic3x-codec.3-001b", //2-->1 .platform_name = "davinci-pcm-audio", .init = evm_aic3x_init, .ops = &evm_ops, }; 输出信息: [ 1.586273] usbhid: USB HID core driver [ 1.591125] usbcore: registered new interface driver snd-usb-audio [ 1.599212] tlv320aic3x-codec 3-001b: ---wxj---aic3x_i2c_probe() [ 1.605529] tlv320aic3x-codec 3-001b: ---wxj---aic3x->control_type = SND_SOC_I2C [ 1.613281] tlv320aic3x-codec 3-001b: ---wxj---snd_soc_register_codec return 0 [ 1.625732] soc-audio soc-audio.0: binding TLV320AIC3X at idx 0 [ 1.631927] ---wxj---soc-core.c soc_bind_dai_link(), binding TLV320AIC3X at idx 0 [ 1.639770] soc-audio soc-audio.0: find CPU DAI from registered DAIs: dai_name davinci-mcasp.0 [ 1.648803] soc-audio soc-audio.0: CODEC found, so find CODEC DAI from registered DAIs from this CODEC: dai_name davinci-mcasp.0 [ 1.660888] soc-audio soc-audio.0: then find one from the set of registered platforms: platform_name davinci-pcm-audio [ 1.672088] ---wxj---soc-core.c soc_bind_dai_link(),rtd->complete=1, return 1 [ 1.679656] tlv320aic3x-codec 3-001b: ---wxj---tlv320aic3x.c aic3x_probe() [ 1.686889] tlv320aic3x-codec 3-001b: Failed to get supply 'IOVDD': -19 [ 1.693817] tlv320aic3x-codec 3-001b: Failed to request supplies: -19 [ 1.700561] tlv320aic3x-codec 3-001b: asoc: failed to probe CODEC tlv320aic3x-codec.3-001b: -19 [ 1.709716] asoc: failed to instantiate card AM335X EVM: -19 [ 1.715698] ALSA device list: [ 1.718811] No soundcards found. 音频芯片的供电部分硬件工程师测量正常。
我也遇到这个问题。wxjggwxjgg,解决了吗?
anuoLinux 2013-07-14
  • 打赏
  • 举报
回复
我用的I2C4.不是I2C0.因此上面部分需要修改,这样在dev下可以看到设备节点了,但是我tlv320aic32x芯片的MCLK晶振不是24.576M, 而是24M的,开发板是24.576的,声音正常,我现在能控制设备,但是声音不对,不知道频率这块怎样修改,即能实现和以前一样的,MCASP2的ACLKX时钟选择的外部时钟,应该就是tlvaic32提供的吧,如果时钟不对,是不是导致我现在的问题呢?哪位大手指点下?
anuoLinux 2013-07-14
  • 打赏
  • 举报
回复
1.sound/soc/davinci/davinci-evm.c static struct snd_soc_dai_link ti81xx_evm_dai[]={ .codec_name="tlv320aic3x-codec.4-0018",//If I2c1 then use tlv320aic3x-codec.1-0018 (I2c1~I2c4) }
liujwcool1 2013-07-13
  • 打赏
  • 举报
回复
怎么解决的 ?说说
anuoLinux 2013-07-12
  • 打赏
  • 举报
回复
问题得到解决
anuoLinux 2013-07-12
  • 打赏
  • 举报
回复
你好,我现在的音频驱动也遇到了点问题,平台是DM8148,开发板的音频驱动以前是挂载I2c0上,我们自己做的板子挂载I2c3上,其于什么都没有变,现在I2c3上可以检测到tlvaic32芯片,读出来的地址也是0x18,可是驱动无发执行probe函数,即 Tlv320aic3x.c (sound\soc\codecs) 中的函数: aic3x_probe无法得到执行,因此在/dev/snd/下没有看到音频设备节点controlC0 pcmC0D0c pcmC0D0p 我的修改部分: static struct i2c_board_info __initdata ti814x_i2c_boardinfo3[] = { { I2C_BOARD_INFO("tlv320aic3x", 0x18), }, }; 开发板以前为: static struct i2c_board_info __initdata ti814x_i2c_boardinfo[] = { { I2C_BOARD_INFO("eeprom", 0x50), .platform_data = &eeprom_info, }, { I2C_BOARD_INFO("cpld", 0x23), }, { I2C_BOARD_INFO("tlv320aic3x", 0x18), }, { I2C_BOARD_INFO("IO Expander", 0x20), }, ----- } 因此驱动与设备名字肯定是对应的,如果我将ti814x_i2c_boardinfo中的I2C_BOARD_INFO("tlv320aic3x", 0x18), 即开发板自带的配置放里面---I2c0的,我发现在probe函数可以调用,并且/dev/snd下有设备 疑问: 音频设备已经在i2c3上而不是I2c0上,为什么用开发板自带的配置信息,会看到设备呢?而我类似的修改I2c3的配置看不到呢?为什么不能调用prboe函数呢?如果说名字没有对上,但是我和开发板一样的的,这个肯定没问题啊?这个probe函数何时被调用的呢? 请高人指点。 联系方式:QQ 254536690 一起探讨。互相进步哈。
静观世界风云 2013-05-03
  • 打赏
  • 举报
回复
大侠,我往下调试,又碰到问题了,用aplay 列设备信息的话,显示如下: [root@me /]# aplay -L null Discard all samples (playback) or generate zero samples (capture) default:CARD=EVM AM335X EVM, Default Audio Device [root@me /]# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: EVM [AM335X EVM], device 0: AIC3X tlv320aic3x-hifi-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0 我用aplay 播放wav文件时,系统崩溃了, 信息如下: ./aplay -D hw:0,0 tweet.wav Playing WAVE 'tweet.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo [ 422.456115] Unable to handle kernel NULL pointer dereference at virtual address 0000002c [ 422.464630] pgd = c0004000 [ 422.467437] [0000002c] *pgd=00000000 [ 422.471191] Internal error: Oops: 17 [#1] [ 422.475372] Modules linked in: [ 422.478546] CPU: 0 Not tainted (3.2.0 #396) [ 422.483306] PC is at regulator_enable+0xc/0x260 [ 422.488037] LR is at regulator_bulk_enable_async+0x18/0x20 [ 422.493743] pc : [<c0231804>] lr : [<c0231a70>] psr: 60000013 [ 422.493774] sp : c784bec8 ip : c784bef0 fp : c784beec [ 422.505737] r10: c0060fe8 r9 : c7814200 r8 : c7a459c8 [ 422.511199] r7 : c7a459c0 r6 : c7817740 r5 : c7a459c8 r4 : c7925184 [ 422.518005] r3 : 00000000 r2 : 0000001c r1 : c0657b90 r0 : 00000000 [ 422.524810] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel [ 422.532440] Control: 10c5387d Table: 8791c019 DAC: 00000015 [ 422.538421] Process kworker/u:1 (pid: 8, stack limit = 0xc784a2f0) [ 422.544891] Stack: (0xc784bec8 to 0xc784c000) [ 422.549438] bec0: c7925184 c7a459c8 c7817740 c7a459c0 c7a459c8 c7814200 [ 422.557983] bee0: c784bf04 c784bef0 c0231a70 c0231804 c068ad0c c7a459c8 c784bf4c c784bf08 [ 422.566497] bf00: c006106c c0231a64 c003be60 c0038d14 c7817740 c7a459c8 c7817740 00000012 [ 422.575042] bf20: c784bf3c c784bf30 c003bec0 c7817740 c7a459c8 c7817740 00000000 c7814205 [ 422.583587] bf40: c784bf84 c784bf50 c005412c c0060ff4 c0054c3c 00000000 00000000 c7817740 [ 422.592132] bf60: c069d8e8 00000089 c784a000 c7817750 c069d8e8 c069d8e8 c784bfbc c784bf88 [ 422.600677] bf80: c0054e38 c0054018 c782bed8 c7817750 c0054cc4 c784bfcc c782bed8 c7817740 [ 422.609191] bfa0: c0054cc4 00000000 00000000 00000000 c784bff4 c784bfc0 c005a194 c0054cd0 [ 422.617736] bfc0: c782bed8 00000000 c7817740 00000000 c784bfd0 c784bfd0 c782bed8 c005a100 [ 422.626281] bfe0: c00438f4 00000013 00000000 c784bff8 c00438f4 c005a10c 000eed10 b0990345 [ 422.634796] Backtrace:
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
引用 4 楼 bzw73 的回复:
这个很简单吗,就是你的machine部分,与你在板端注册的一些名字对应不上,在执行到probe时候出错了,并不是I2C注册问题,你的设备已经注册上去了。只是声卡注册不成功
bzw73, 我和你同感, 这个是音频驱动程序里的名字:有两个地方 static struct i2c_driver tlv320aic23_i2c_driver = { .driver = { .name = "tlv320aic23-codec", }, .probe = tlv320aic23_codec_probe, .remove = __exit_p(tlv320aic23_i2c_remove), .id_table = tlv320aic23_id, }; static struct snd_soc_dai_driver tlv320aic23_dai = { .name = "tlv320aic23-hifi", .playback = { .stream_name = "Playback", .channels_min = 2, .channels_max = 2, .rates = AIC23_RATES, .formats = AIC23_FORMATS,}, .capture = { .stream_name = "Capture", .channels_min = 2, .channels_max = 2, .rates = AIC23_RATES, .formats = AIC23_FORMATS,}, .ops = &tlv320aic23_dai_ops, }; 这个是和平台相关的,davinci.c static struct snd_soc_card am335x_snd_soc_card = { .name = "AM335X EVM", .dai_link = &am335x_evm_dai, .num_links = 1, }; static struct snd_soc_dai_link am335x_evm_dai = { .name = "TLV320AIC3X", .stream_name = "AIC3X", .cpu_dai_name = "davinci-mcasp.0", //wxj 1---0 .codec_dai_name = "tlv320aic3x-hifi", .codec_name = "tlv320aic3x-codec.3-001b", //wxj 2---1 .platform_name = "davinci-pcm-audio", .init = evm_aic3x_init, .ops = &evm_ops, }; 不知道,I2C注册时,用哪个名字?
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
static struct pinmux_config i2c2_pin_mux[] = { {"spi0_sclk.i2c2_sda", OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW | AM33XX_PULL_UP | AM33XX_INPUT_EN}, {"spi0_d0.i2c2_scl", OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW | AM33XX_PULL_UP | AM33XX_INPUT_EN}, {NULL, 0}, }; static struct i2c_board_info am335x_i2c_boardinfo2[] = { { I2C_BOARD_INFO("tlv320aic3x", 0x1b), }, }; static void i2c2_init(int evm_id, int profile) { setup_pin_mux(i2c2_pin_mux); omap_register_i2c_bus(3, 400, am335x_i2c_boardinfo2, ARRAY_SIZE(am335x_i2c_boardinfo2)); return; } 是这个吗
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
static struct i2c_board_info am335x_i2c_boardinfo2[] = { /*wxj for sound*/ { I2C_BOARD_INFO("tlv320aic3x", 0x1b), }, }; static void i2c2_init(int evm_id, int profile) { setup_pin_mux(i2c2_pin_mux); pr_info("---wxj--- i2c2_init(),for tlv320aic3x driver register\n"); omap_register_i2c_bus(3, 400, am335x_i2c_boardinfo2, ARRAY_SIZE(am335x_i2c_boardinfo2)); return; } 挂在:i2c_bus 3上, 从设备tlv320aic3x,0x1b
cclutpk 2013-04-25
  • 打赏
  • 举报
回复
代码没有修改全啊,i2c没有指定是哪个i2c controller,也没有从设备地址
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
谢谢,bzw73 .codec_name = "tlv320aic3x-codec.3-001b", //2-->1 我会再验证,看是否要再修改。 但是还有个问题。 在I2C的控制上,测试I2C的时钟线,发现没有时钟信号 那么,为什么I2C的时钟线上没有时钟信号呢?
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
好的,非常非常感谢,我往下再找找看,弄清具体是什么原因?
cclutpk 2013-04-25
  • 打赏
  • 举报
回复
下面看codec是否配置成功,要验证i2c功能了
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
引用 17 楼 cclutpk 的回复:
应该还没到i2c读写部分,这段话是负责供电的,你电都上了,这些代码没有用 把整个文件里面regulator相关的代码都注释掉,因为你 regulator_bulk_get执行不成功,导致后面regulator函数会有空指针导致系统崩溃
cclutpk 高人啊, 按你说的修改,果然,可以出现device list信息 [ 1.739959] ---wxj---soc-core.c soc_bind_dai_link(), binding TLV320AIC3X at idx 0 [ 1.747802] soc-audio soc-audio.0: find CPU DAI from registered DAIs: dai_name davinci-mcasp.0 [ 1.756835] soc-audio soc-audio.0: CODEC found, so find CODEC DAI from registered DAIs from this CODEC: dai_name davinci-mcasp.0 [ 1.768920] soc-audio soc-audio.0: then find one from the set of registered platforms: platform_name davinci-pcm-audio [ 1.780120] ---wxj---soc-core.c soc_bind_dai_link(),rtd->complete=1, return 1 [ 1.787689] tlv320aic3x-codec 3-001b: ---wxj---tlv320aic3x.c aic3x_probe() [ 1.798645] asoc: tlv320aic3x-hifi <-> davinci-mcasp.0 mapping ok [ 1.807189] ALSA device list: [ 1.810302] #0: AM335X EVM 但是,问题是 /dev/目录下,没有snd目录出现啊,也没有音频设备出现啊?
cclutpk 2013-04-25
  • 打赏
  • 举报
回复
应该还没到i2c读写部分,这段话是负责供电的,你电都上了,这些代码没有用 把整个文件里面regulator相关的代码都注释掉,因为你 regulator_bulk_get执行不成功,导致后面regulator函数会有空指针导致系统崩溃
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(aic3x->supplies),aic3x->supplies); 返回结果 [ 1.742553] tlv320aic3x-codec 3-001b: Failed to get supply 'IOVDD': -19 [ 1.749511] tlv320aic3x-codec 3-001b: Failed to request supplies: -19
静观世界风云 2013-04-25
  • 打赏
  • 举报
回复
static int aic3x_probe(struct snd_soc_codec *codec) { struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec); int ret, i; INIT_LIST_HEAD(&aic3x->list); aic3x->codec = codec; codec->dapm.idle_bias_off = 1; dev_err(codec->dev, "---wxj---tlv320aic3x.c aic3x_probe()\n", ret); ret = snd_soc_codec_set_cache_io(codec, 8, 8, aic3x->control_type); if (ret != 0) { dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); return ret; } if (gpio_is_valid(aic3x->gpio_reset) && !aic3x_is_shared_reset(aic3x)) { ret = gpio_request(aic3x->gpio_reset, "tlv320aic3x reset"); if (ret != 0) goto err_gpio; gpio_direction_output(aic3x->gpio_reset, 0); } for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) aic3x->supplies[i].supply = aic3x_supply_names[i]; ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(aic3x->supplies), aic3x->supplies); if (ret != 0) { dev_err(codec->dev, "Failed to request supplies: %d\n", ret); goto err_get; } 上面,声卡驱动,红色代码,就是读寄存器,应该会有I2C读写吧。
cclutpk 2013-04-25
  • 打赏
  • 举报
回复
i2c只有读写的时候才有时钟信号,你确定代码是不是有i2c读写了,有的话用示波器从开机就抓一下看看是不是有波形来确定一下到底是不是i2c的问题
加载更多回复(8)
ARM9嵌入式系统设计基础教程ppt 第1章 嵌入式系统基础知识 1.1 嵌入式系统的定义和组成 1.1.1 嵌入式系统的定义 1.1.2 嵌入式系统发展趋势 1.1.3 嵌入式系统的组成 1.1.4 实时系统 1.2 嵌入式微处理器体系结构 1.2.1 冯•诺依曼结构与哈佛结构 1.2.2 精简指令集计算机 1.2.3 流水线技术 1.2.4 信息存储的字节顺序 1.3 嵌入式微处理器的结构和类型 1.3.1 嵌入式微控制器 1.3.2 嵌入式微处理器 1.3.3 嵌入式DSP处理器 1.3.4 嵌入式片上系统 1.3.5 多核处理器 思考题与习题 第2章 ARM体系结构 2.1 ARM体系结构简介 2.2 ARM微处理器结构 2.2.1 ARM7微处理器 2.2.2 ARM9微处理器 2.2.3 ARM9E微处理器 2.2.4 ARM10E微处理器系列 2.2.5 SecurCore微处理器 2.2.6 StrongARM微处理器 2.2.7 XScale微处理器 2.3 ARM微处理器的寄存器结构 2.3.1 处理器运行模式 2.3.2 处理器工作状态 2.3.3 ARM微处理器的寄存器组织 2.3.4 Thumb状态的寄存器集 2.4 ARM微处理器的异常处理 2.4.1 ARM体系结构的异常类型 2.4.2 异常类型的含义 2.4.3 异常的响应过程 2.4.4 应用程序中的异常处理 2.5 ARM的存储器结构 2.6 ARM微处理器指令系统 2.6.1 基本寻址方式 2.6.2 ARM指令集 2.6.3 Thumb 指令集 2.7 ARM微处理器的接口 2.7.1 ARM协处理器接口 2.7.2 ARM AMBA接口 2.7.3 ARM I/O结构 2.7.4 ARM JTAG调试接口 思考题与习题 第3章 32 Bit RISC微处理器 S3C2410A 3.1 S3C2410A简介 3.1.1 S3C2410A内部结构 3.1.2 S3C2410A的技术特点 3.2 S3C2410A存储器控制器 3.2.1 S3C2410A的存储器控制器特性 3.2.1 S3C2410A的存储器映射 3.3 时钟和电源管理 3.4 S3C2410A的I/O口 3.4.1 S3C2410A的I/O口配置 3.4.2 S3C2410A的I/O口寄存器 3.5 S3C2410A的中断控制 3.5.1 ARM系统的中断处理 3.5.2 S3C2410A的中断控制器 3.5.3 S3C2410A中断编程实例 3.6 S3C2410A的DMA控制器 3.6.1 DMA工作原理 3.6.2 S3C2410A的DMA控制器 3.6.3 S3C2410A DMA编程实例 思考题与习题 第4章 嵌入式系统的存储器系统 4.1 存储器系统概述 4.1.1 存储器系统的层次结构 4.1.2 高速缓冲存储器 4.1.3 存储管理单元 4.2 嵌入式系统存储设备分类 4.2.1 存储器部件的分类 4.2.2 存储器的组织和结构 4.2.3 常见的嵌入式系统存储设备 4.3 NOR Flash接口电路 4.3.1 NOR Flash存储器Am29LV160D 4.3.2 S3C2410A与NOR Flash存储器的接口电路 4.4 NAND Flash接口电路 4.4.1 S3C2410A NAND Flash控制器 4.4.2 S3C2410A与NAND Flash存储器的接口电路 4.5 SDRAM接口电路 4.6 CF卡接口电路 4.6.1 PCMCIA接口规范 4.6.2 S3C2410A的CF卡接口电路 4.6.3 CF卡的读写操作 4.7 SD卡接口电路 4.7.1 SD卡的接口规范 4.7.2 S3C2410A的SD卡接口电路 4.8 IDE接口电路 4.8.1 S3C2410A 的IDE接口电路 4.8.2 IDE硬盘读/写操作 思考题与习题 第5章 嵌入式系统输入/输出设备接口 5.1 GPIO(通用输入/输出接口) 5.1.1 GPIO原理与结构 5.1.2 S3C2410A输入/输出端口编程实例 5.2 A/D转换器接口 5.2.1 A/D(模/数)转换的方法和原理 5.2.2 S3C2410A的A/D转换器 5.2.3 S3C2410A A/D接口编程实例 5.3 D/A转换器接口 5.3.1 D/A(数/模)转换器的方法和原理 5.3.2 S3C2410A与D/A转换器的接口电路 5.4 键盘与LED数码管接
可能感兴趣的项目设计:基于51单片机的FM收音机制作原理图,源代码 (链接:https://www.cndzz.com/diagram/4234_4235/197369.html) Si4745概述: Si4745芯片是Silicon Labs公司面向车载收音机市场推出的一款DSP(Digital Signal Processor)收音芯片。极小的4*4 mm 24脚QFN封装,由于使用了先进的CMOS技术,就这么一个小小的芯片可以实现完整的全波段收音功能。为应对车内复杂的电磁环境,抗干扰能力较强。 芯片支持以下频率范围:FM波段:64-108MHZ;AM波段:520-1710KHZ;LW波段:153-288KHZ;SW波段:2.3-30MHZ。还支持RDS接收。可以直接通过总线输出信号质量指示、信噪比、频率偏移等数值。 工作电压:3.0-3.6V;典型工作电流: FM波段:26ma; AM波段:19ma; 待机模式:6ua。 FM接收灵敏度: 2uV; THD:0.1% Si474X系列的管脚和方框图: Si4745通讯管脚由SDIO、SCLK、SEN、RST构成。在RST的上升沿对GPO1和GPO2的电平进行采样确定工作于哪种模式。 有三种控制总线方式可以选择: 2线模式(兼容I2C) 3线模式 SPI模式 因为GPO1内部集成上拉电阻,GPO2/INT集成下拉电阻。所以芯片默认工作于2-wire(I2C)模式。在3-wire和SPI模式下,总线由SDIO、SCLK和SEN组成。而I2C模式只使用SDIO和SCLK进行通讯,SEN的电平高低决定了I2C的操作地址。其对应关系如下: SEN电平 写地址 读地址 SEN=0 0x22 0x23 SEN=1 0xc6 0xc7 以前玩过一些I2C总线的芯片,SPI和3线没有接触过,决定使用I2C方式来驱动。测量后发现,楼主手里的模块SEN接地,所以I2C的写入地址为0x22,读取地址是0x23。 I2C通讯协议: 起始信号(START):在SCL为高电平期间,SDA从高到低的跳变; 终止信号(STOP):在SCL为高电平期间,SDA从低到高的跳变; 应答信号(ACK):发送或接收完8bit数据后,在下一个时钟周期(SCL=1),SDA=0为应答(ACK),SDA=1为非应答(NACK); 写入流程:MCU发送起始信号,接下来发送器件地址(0x22),接收应答信号,再发送N字节的8位数据,每发送一个字节后都要读应答信号,最近发送终止信号,释放总线。 读取流程:MCU发送起始信号,接下来发送器件地址(0x23),接收应答信号,开始接收N字节的8位数据,每读取一个字节后都要读应答信号。如果器件非应答,就发送终止信号,结束读取过程。最后释放总线。 本制作主要用了下面几条操作命令: 0x01: POWRE_UP 此命令主要设置CTS中断使能、GPO2 输出使能、晶振、接收波段和音频输出选择等功能。 0X11: POWER_DOWN 发送本命令让芯片进入待机模式 0X12:SET_PROPERTY 设置属性命令 0X14:GET_INT_STATUS 获取中断状态,主要用于判断搜索是否完成。 0X20:FM_TUNE_FREQ 写入指定的频率(64-108mhz) 0X21:FM_SEEK_START 开始搜索电台。可以设置搜索方向和到达搜索终点时是否循环。 0X22:FM_TUNE_STATUS 调谐状态,本例中用于获取当前电台的频率。 0X23:FM_RSQ_STATUS 接收信号质量。RSSI:信号质量,单位为dBuV。SNR:信噪比,单位dB. Si4745的常用属性: 0X1100:FM_DEEMPHASIS 去加重时间常数设置,默认值为0x0002(75us)。要设置为我国使用的50us,需要将值设为0x0001; 0X4000:RX_VOLUME 音量设置,范围从0x00-0x3f,共64级,每级步进1dB。默认值为0X3f即最大音量。 其余属性值在本制作中全部使用了默认值,也就是不去操作这些寄存器。 先用STC15L104W单片机做了一个测试小板,电路够简单,程序才是本制作的难点 电路采用STC89LE52单片机做主控,模拟I2C协议控制DSP收音模块。MicroUSB提供5V电源,经1117-3.3降压后供DSP模块和MCU使用。加了一级TDA1308组成的音频放大,可直接驱动耳机。 视频演示: 原文出处:https://www.crystalradio.cn/thread-1331951-1-1.html
74ACT573T 双向数据传输 74HC138 138译码器 74HC154 4-16译码器 74HC4052 双通道模拟开关 74HC595 移位寄存器 74HVC32M 双输入或门 74LS32M 双输入或门 74VHC04M 非门 ACS712 电流检测芯片 ACT45B 共模电感 AD5235 数控电阻 AD8251 可控增益运放 AD8607AR 双运放 AD8667 双运放 AD8672AR 双运放 ADG836L 双刀双掷数字开关 AFBR-5803-ATQZ 光以太网 AS1015 可调升压芯片 ASM1117 3.3V稳压芯片 AT24C02 EEROM存储器 AT89S52 51系列单片机 BC57F687 蓝牙音频模块 BCP68 NPN三极管 BCP69T PNP三极管 BEEP 蜂鸣器 BMP 闪电符号 BTS7970 电机驱动 Battery 备份电池 Butterfly 功率激光器 Butterfly-S 功率激光器 CD4052BCM 双通道模拟开关 CG103 BOSCH点火芯片 CHECK 测试点 CY7C026AV RAM CY7C1041CV33 RAM Cap 无极性电容 Cap Pol 极性电解电容 D Connector 15 VGA D Connector 9 串口 D-Schottky 肖特基二极管 DAC8532 数模转换 DM9000A 网络芯片 DM9000C 网络芯片 DP83848I 网络芯片 DPY-4CA 共阳4位数码管 DPY-4CK 共阴4位数码管 DRV411 闭环磁电流 DS1307Z 实时时钟 DS18B20 温度传感器 Diode 二极管 Diode-Z 稳压二极管 Diode_CRD 恒流二极管 EMIF 接插件 FIN 散热片 FM24CL16 铁电存储器 FPC-30P FPC排线连接器 FPC-40P FPC排线连接器 FT232RL USB转串口 FZT869 NPN三极管 Fuse 2 保险丝 G3VM-61 半导体继电器 GA240 Freescale16位单片机 HFBR-1414 光发送 HFBR-2412 光接收 HFKC 单刀双掷继电器 HK4100F 单刀双掷继电器 HR911103A 网络接口 HR911105A 以太网接口 HS0038B 红外接收器 Header 10 Header, 10-Pin Header 10X2 Header, 10-Pin Header 14X2B 2*14双排插针 Header 16 Header16贴片 Header 16X2 接插件 Header 2 接插件 Header 2X2A 接插件 Header 2X2B 接插件 Header 3 接插件 Header 32X2 接插件 Header 4 接插件 Header 40 接插件 Header 5X2 接插件 Header 6 接插件 Header 7X2 Header, 7-Pin Header 8 Header, 8-Pin Header 8X2A 接插件 Header_AMP50 控制器接插件 IS61LV51216 静态RAM ISO7221 隔离芯片 Inductor 电感 JoyStick 模拟摇杆 L298 ST双电桥 L5150BN 5V稳压芯片 LCD_CON37 LCD接口 LD-6.0mm 5MW激光 LD-MOD 激光调制管 LED-RGB 三基色LED LED0 发光二极管 LED1 双色LED LM2577S-ADJ DC升压 LM2577T-ADJ DC升压 LM2596S-5.0 5V稳压芯片 LM2596S-ADJ 可调稳压芯片 LM2596T-5.0 5V稳压芯片 LM2596T-ADJ 可调稳压芯片 LM2940 5V稳压芯片 LM2940CT-5.0 1A 5V LM2991S 稳压芯片 LM317 稳压芯片 LM324 4运放SOP8芯片 LM358 双运放 LM7171 单运放 LM7818CT Series 3-Terminal Positive Regulator LM7905CT 稳压芯片 LMV951 超低功耗运放 LOG114 光电检测 LT1678 双运放 LTC1044CD Switched-Capacitor Voltage Converter LTC6652 电压基准 M95640 MAX11046ECB+ AD转换 MAX232 +5V Powered, Multi-Channel RS-232 Driver/Receiver MAX3221 串口电平转换 MAX4173 高端电流检测 MAX6126 电压基准 MAX660CSA -5V电源芯片 MAX8069 1.2V稳压二极管 MAX8654 MC33789 飞思卡尔传感器 MC9S12GXX 飞思卡尔单片机 MC9S12X 飞思卡尔单片机 MOSFET-N N-Channel MOSFET MOSFET-P P-Channel MOSFET MPC5602_64P Freescale PowerPC Mic2 Microphone PD 光电二极管 PESD1CAN 过压保护 PJ-306 立体声耳机插座 PR_8 8排直播排电阻 PWRCON 直流电源端子 RCA RCA Phono Jack RPot 精密可调电阻 RUE002N02 低功耗MOSFET Res1 贴片电阻 S8050 NPN三极管 S8550 PNP三极管 S9014 NPN三极管 SC040 语音 SDCARD SD卡自弹 SDCARD-M TF卡槽 SMB460 SMB460 SMB492 外围加速度传感器 SN65HVD230 CAN芯片 SN74LVC SN74LVTH245 双向数据传输 SN75452 Dual Peripheral Driver SP3485 485总线芯片 SPX1117M3-3.3 3.3V稳压芯片 SPX1117M3-5.0 5.0V稳压芯片 SS8050 NPN贴片三极管 SS8550 PNP贴片三极管 SS9014 NPN贴片三极管 ST188 反射式光电传感器 STM32F103C STM32单片机48引脚 STM32F103V STM32单片机100引脚 STM32F103Z STM32单片机144引脚 STM32F105V STM32单片机100引脚 STM32F107V STM32单片机100引脚 STM32F407V STM32单片机100引脚 STM32F407Z STM32单片机144引脚 SW DIP-4 编码开关 SW-DIP8 8位直插拨码开关 SW-DPDT 单刀双掷开关 SW-EC11 旋转编码开关 SW-PB 微动开关 SW-PB4 微动开关 SW-SPDT 开关 Speaker Speaker TL082ACD JFET-Input Operational Amplifier TLP281 光耦 TMR 隧道磁电阻 TMS320F28335 DSP芯片 TOSA 激光器 TP4056 锂电池充电管理 TPS3305 DSP电源管理 TPS6735 负电压芯片 TPS70302 DSP电源芯片 TQ2SA 单通道继电器 TQ2SA-L2 双通道双稳态继电器 TSC2046IPW 触摸驱动芯片 TVP5150AM1 视频解码芯片 TVS TVS保护 ULN2003L 驱动芯片 USB USB接口 USB_M MicroUSB接口 VS10XX 音频解码芯片 W25QXX SPI FLASH XATLS 贴片有源晶振 XTAL 晶振 XTAL-3PIN 贴片晶振 XTAL_SM 圆柱晶振 PCB封装列表 Component Name ----------------------------------------------- 0603-1 0603-2 0805-1 0805-2 1206 1210 1812 2010 2512 AFBR-5803AQZ AXIAL-0.8 AXIAL-0.9 Beep C-RAD C-RAD-0603 C-RAD-0805 C-RAD-1825 C-RAD-3528 C-RB-8 C-RB-10 C-RB-12 C-RB-18 C-RB-S6 C-RB-S8 C-RB-S10 CAP-1206 CAP-3216 CAP-3528 CAP-6032 CAP-7343 CHECK-A CHECK-B CR1220 DB9-F DB9-M DB15-F DB15-M DC-002 DC-005 DIODE-1206 DIODE-AXL DIODE-SMA DIODE-SMB DIODE-SMC DIP-40 DIP16 DIP16-KEY DIP24 DW024_N DYP-4BIT EC11 FIN-P2 FPC0.5-40P-A FPC0.8-30P-A FPC1.0-16P-A HDR_ENG1 HDR_ENG2 HDR2X1_A HDR2X1_B1 HDR2X1_B2 HDR2X1_B3 HDR2X1_C HDR2X1_D1 HDR2X2_A HDR2X2_B HDR3X1_A HDR3X1_B1 HDR3X1_B2 HDR3X1_B4 HDR3X1_C HDR3X1_D1 HDR3X1_D2 HDR3X2_A1_2.0 HDR3X2_A2_2.0 HDR4X1_A HDR4X1_B1 HDR4X1_B2 HDR4X1_C HDR4X1_F HDR4X2_F2 HDR5X2_A1 HDR5X2_A3 HDR5X2_B1 HDR5X2_B1_2.0 HDR5X2_C2 HDR6X1_A HDR6X1_B1 HDR6X1_B2 HDR7X2_A1 HDR7X2_B1 HDR7X2_B1_2.0 HDR8X2_A1 HDR8X2_E1 HDR9X1_A HDR10X2_A1 HDR10X2_B1 HDR10X2_B1_2.0 HDR14X2_A1 HDR14X2_A2 HDR16X1_A HDR16X2 HDR16X2-HB HDR16X3_HA HDR16X3_HB HDR25X2_B1_2.0 HDR25X2_H HDR32X2_HA HDR32X2_HB HDR34_BT HDR37X1_F HDR40X1_A HDR192_C_2.0 HFBR-X41XMZ HFKC HK4100F HS0038B JoyStick L-RB-8 L-RB-8F L-SMD-7 L-SMD-10 L-SMD-12 L-TDK LD-4P LD-6.0 LD-MOD LED_0805 LED_A1 LED_A2 LED_A3 LED-3528 LED-RGB LOGO_Thunder LOGO-3S LQFP-32_M LQFP-48_M LQFP-64 LQFP-64_EP LQFP-100_M LQFP-176_M MSOP-MS8_M MSOP-UN10_N Multiwatt15-H Multiwatt15-V NSO8_N NSO8_TP4056 NSO16_M PD PDSO-G8 PH2.0-8P PH2.0-10P PIN2 PJ-306 PJ-315-B PW016 QFN-16 RCA/4.5-H2 RCJ-04X RJ8-1 RJ8-2 RJ8-HR911103A RJ8-HR911105A RJ8-HR911105B SDCARD_A SDCARD_B SDCARD-M SO20_M SOIC8_N SOIC8_W SOIC127P610X175-8N SOIC127P1050X265-16N SOP-14N SOP-20 SOP16-50-208 SOP127P710X350-4N SOP254P1150X560-10N SOT-23 SOT-223 SOT-416 SOT23-6 SOT254P-6 SSOP-
软件编程规范培训实例与练习 软件编程规范培训实例与练习  问题分类 1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题; 接口类问题(B类)-指设计、编码中出现的函数和环境、其他函数、全局/局部变量或数据变量之间的数据/控制传输不匹配的问题,在系统中起重要作用,将导致模块间配合失效等严重问题; 维护类问题(C类)-指设计、编码中出现的对软件系统的维护方便程度造成影响的问题,在系统中不起关键作用,但对系统后期维护造成不便或导致维护费用上升; 可测试性问题(D类)-指设计、编码中因考虑不周而导致后期系统可测试性差的问题。  处罚办法 问题发生率: P=D/S D=DA+0.5DB+0.25DC 其中: P -问题发生率 D -1个季度内错误总数 DA -1个季度内A类错误总数 DB -1个季度内B类错误总数 DC -1个季度内C类错误总数 S -1个季度内收到问题报告单总数 1)当D≥3时,如果P≥3%,将进行警告处理,并予以公告; 2)当D≥5时,如果P≥5%,将进行罚款处理,并予以公告。 目 录 一、逻辑类代码问题 第5页 1、变量/指针在使用前就必须初始化 第5页 【案例1.1.1】 第5页 2、防止指针/数组操作越界 第5页 【案例1.2.1】 第5页 【案例1.2.2】 第6页 【案例1.2.3】 第7页 【案例1.2.4】 第8页 3、避免指针的非法引用 第9页 【案例1.3.1】 第9页 4、变量类型定义错误 第10页 【案例1.4.1】 第10页 5、正确使用逻辑与&&、屏蔽&操作符 第17页 【案例1.5.1】 第17页 6、注意数据类型的匹配 第18页 【案例1.6.1】 第18页 【案例1.6.2】 第18页 7、用于控制条件转移的表达式及取值范围是否书写正确 第20页 【案例1.7.1】 第20页 【案例1.7.2】 第21页 【案例1.7.3】 第22页 8、条件分支处理是否有遗漏 第24页 【案例1.8.1】 第24页 9、引用已释放的资源 第26页 【案例1.9.1】 第26页 10、分配资源是否已正确释放 第28页 【案例1.10.1】 第28页 【案例1.10.2】 第29页 【案例1.10.3】 第30页 【案例1.10.4】 第32页 【案例1.10.5】 第33页 【案例1.10.6】 第35页 【案例1.10.7】 第38页 11、防止资源的重复释放 第39页 【案例1.11.1】 第39页 12、公共资源的互斥性和竞用性 第40页 【案例1.12.1】 第40页 【案例1.12.2】 第40页 二、接口类代码问题 第43页 1、对函数参数进行有效性检查 第43页 【案例2.1.1】 第43页 【案例2.1.2】 第43页 【案例2.1.3】 第44页 【案例2.1.4】 第46页 【案例2.1.5】 第47页 【案例2.1.6】 第48页 2、注意多出口函数的处理 第49页 【案例2.2.1】 第49页 三、维护类代码问题 第51页 1、 统一枚举类型的使用 第51页 【案例3.1.1】 第51页 2、 注释量至少占代码总量的20% 第51页 【案例3.2.1】对XXX产品BAM某版本部分代码注释量的统计 第51页 四、产品兼容性问题 第52页 1、系统配置、命令方式 第52页 【案例4.1.1】 第52页 【案例4.1.2】 第53页 2、设备对接 第54页 【案例4.2.1】 第54页 3、其他 第55页 【案例4.3.1】 第55页 五、版本控制问题 第58页 1、新老代码中同一全局变量不一致 第58页 【案例5.1.1】 第58页 六、可测试性代码问题 第59页 1、调试信息/打印信息的正确性 第59页 【案例6.1.1】 第59页 一、逻辑类代码问题 1、变量/指针在使用前就必须初始化 【案例1.1.1】 C语言中最大的特色就是指针。指针的使用具有很强的技巧性和灵活性,但同时也带来了很大的危险性。在XXX的代码中有如下一端对指针的灵活使用: ... ... _UC *puc_card_config_tab; ... ... Get_Config_Table(
个人最常用的集成库了,平时做项目用到的器件和封装都能在里边找到的! 74ACT573T 双向数据传输 74HC138 138译码器 74HC154 4-16译码器 74HC595 移位寄存器 74HC4052 双通道模拟开关 74HVC32M 双输入或门 74LS32M 双输入或门 74VHC04M 非门 ACS712 电流检测芯片 ACT45B 共模电感 AD5235 数控电阻 AD8251 可控增益运放 AD8607AR 双运放 AD8667 双运放 AD8672AR 双运放 ADG836L 双刀双掷数字开关 AFBR-5803-ATQZ 光以太网 AS1015 可调升压芯片 ASM1117 3.3V稳压芯片 AT24C02 EEROM存储器 AT89S52 51系列单片机 Battery 备份电池 BC57F687 蓝牙音频模块 BCP68 NPN三极管 BCP69T PNP三极管 BEEP 蜂鸣器 BMP 闪电符号 BTS7970 电机驱动 Butterfly 功率激光器 Butterfly-S 功率激光器 Cap 无极性电容 Cap Pol 极性电解电容 CD4052BCM 双通道模拟开关 CG103 BOSCH点火芯片 CHECK 测试点 CY7C026AV RAM CY7C1041CV33 RAM D-Schottky 肖特基二极管 DAC8532 数模转换 D Connector 9 串口 D Connector 15 VGA Diode 二极管 Diode-Z 稳压二极管 Diode_CRD 恒流二极管 DM9000A 网络芯片 DM9000C 网络芯片 DP83848I 网络芯片 DPY-4CA 共阳4位数码管 DPY-4CK 共阴4位数码管 DRV411 闭环磁电流 DS18B20 温度传感器 DS1307Z 实时时钟 EMIF 接插件 FIN 散热片 FM24CL16 铁电存储器 FPC-30P FPC排线连接器 FPC-40P FPC排线连接器 FT232RL USB转串口 Fuse 2 保险丝 FZT869 NPN三极管 G3VM-61 半导体继电器 GA240 Freescale16位单片机 Header 2 接插件 Header 2X2A 接插件 Header 2X2B 接插件 Header 3 接插件 Header 4 接插件 Header 5X2 接插件 Header 6 接插件 Header 7X2 Header, 7-Pin Header 8 Header, 8-Pin Header 8X2A 接插件 Header 10 Header, 10-Pin Header 10X2 Header, 10-Pin Header 14X2B 2*14双排插针 Header 16 Header16贴片 Header 16X2 接插件 Header 32X2 接插件 Header 40 接插件 Header_AMP50 控制器接插件 HFBR-1414 光发送 HFBR-2412 光接收 HFKC 单刀双掷继电器 HK4100F 单刀双掷继电器 HR911103A 网络接口 HR911105A 以太网接口 HS0038B 红外接收器 Inductor 电感 IS61LV51216 静态RAM ISO7221 隔离芯片 JoyStick 模拟摇杆 L298 ST双电桥 L5150BN 5V稳压芯片 LCD_CON37 LCD接口 LD-6.0mm 5MW激光 LD-MOD 激光调制管 LED-RGB 三基色LED LED0 发光二极管 LED1 双色LED LM317 稳压芯片 LM324 4运放SOP8芯片 LM358 双运放 LM2577S-ADJ DC升压 LM2577T-ADJ DC升压 LM2596S-5.0 5V稳压芯片 LM2596S-ADJ 可调稳压芯片 LM2596T-5.0 5V稳压芯片 LM2596T-ADJ 可调稳压芯片 LM2940 5V稳压芯片 LM2940CT-5.0 1A 5V LM2991S 稳压芯片 LM7171 单运放 LM7818CT Series 3-Terminal Positive Regulator LM7905CT 稳压芯片 LMV951 超低功耗运放 LOG114 光电检测 LT1678 双运放 LTC1044CD Switched-Capacitor Voltage Converter LTC6652 电压基准 M95640 MAX232 +5V Powered, Multi-Channel RS-232 Driver/Receiver MAX660CSA -5V电源芯片 MAX3221 串口电平转换 MAX4173 高端电流检测 MAX6126 电压基准 MAX8069 1.2V稳压二极管 MAX8654 MAX11046ECB+ AD转换 MC9S12GXX 飞思卡尔单片机 MC9S12X 飞思卡尔单片机 MC33789 飞思卡尔传感器 Mic2 Microphone MOSFET-N N-Channel MOSFET MOSFET-P P-Channel MOSFET MPC5602_64P Freescale PowerPC PD 光电二极管 PESD1CAN 过压保护 PJ-306 立体声耳机插座 PR_8 8排直播排电阻 PWRCON 直流电源端子 RCA RCA Phono Jack Res1 贴片电阻 RPot 精密可调电阻 RUE002N02 低功耗MOSFET S8050 NPN三极管 S8550 PNP三极管 S9014 NPN三极管 SC040 语音 SDCARD SD卡自弹 SDCARD-M TF卡槽 SMB460 SMB460 SMB492 外围加速度传感器 SN65HVD230 CAN芯片 SN74LVC SN74LVTH245 双向数据传输 SN75452 Dual Peripheral Driver SP3485 485总线芯片 Speaker Speaker SPX1117M3-3.3 3.3V稳压芯片 SPX1117M3-5.0 5.0V稳压芯片 SS8050 NPN贴片三极管 SS8550 PNP贴片三极管 SS9014 NPN贴片三极管 ST188 反射式光电传感器 STM32F103C STM32单片机48引脚 STM32F103V STM32单片机100引脚 STM32F103Z STM32单片机144引脚 STM32F105V STM32单片机100引脚 STM32F107V STM32单片机100引脚 STM32F407V STM32单片机100引脚 STM32F407Z STM32单片机144引脚 SW-DIP8 8位直插拨码开关 SW-EC11 旋转编码开关 SW-PB4 微动开关 SW DIP-4 编码开关 SW-DPDT 单刀双掷开关 SW-PB 微动开关 SW-SPDT 开关 TL082ACD JFET-Input Operational Amplifier TLP281 光耦 TMR 隧道磁电阻 TMS320F28335 DSP芯片 TOSA 激光器 TP4056 锂电池充电管理 TPS3305 DSP电源管理 TPS6735 负电压芯片 TPS70302 DSP电源芯片 TQ2SA 单通道继电器 TQ2SA-L2 双通道双稳态继电器 TSC2046IPW 触摸驱动芯片 TVP5150AM1 视频解码芯片 TVS TVS保护 ULN2003L 驱动芯片 USB USB接口 USB_M MicroUSB接口 VS10XX 音频解码芯片 W25QXX SPI FLASH XATLS 贴片有源晶振 XTAL 晶振 XTAL-3PIN 贴片晶振 XTAL_SM 圆柱晶振

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧