做机器人、搭小车,基本绕不开ATmega328P这颗芯片。它是Arduino Uno的心脏,8位AVR内核,称得上绝大多数单片机玩家的入门第一课。很多人会用Arduino点灯,可一拿到裸芯片或看原理图就懵了:这28个引脚到底都干啥的?这篇把每个引脚的功能讲到底,看完你再接线就知道往哪儿插了。
先说整体数量。ATmega328P最常见的封装是28脚直插(DIP),其中14个是数字I/O,6个是模拟输入,加上电源、复位、晶振等专用脚。数字引脚在Arduino里叫D0-D13,模拟叫A0-A5,板子上的排针就是这么排出来的。单个I/O脚正常能拉出/灌进20mA左右,极限别超40mA,工作电压5V。

看这张Arduino Uno的引脚总图就清楚:D0-D13一排、A0-A5一堆,既有Arduino编号,也标了芯片内部的PB/PC/PD端口名。把这张映射记牢,你就能直接操作寄存器,速度和灵活性比套Arduino库强不少。

先讲电源脚,接错会烧。第7脚是VCC(5V供电),第8和22脚是GND(地),第20脚是AVCC(模拟供电,同样接5V)。Arduino板上还有VIN(外接7到12V输入)、5V、3.3V(板载稳压,最多只能抽50mA)和IOREF。自己搭最小系统唯一要死记的:VCC和GND别接反,一接反芯片当场报废。
再讲串口,调试必备。第2脚PD0是RX(接收)、第3脚PD1是TX(发送),对应Arduino的D0/D1。接USB转串口要交叉:芯片RX接转接板TX、芯片TX接转接板RX,两边GND务必共地。这组脚也常用来和电脑、ESP32、其他单片机通信。
数字端的特殊复用得分清。第4脚PD2是INT0、第5脚PD3是INT1(外部中断,低电平或边沿触发);D3、D5、D6、D9、D10、D11这6路是PWM输出,搞调速、控舵机全靠它们;D13还兼作SPI的SCK,板上那颗LED也接在这,跑SPI时它会跟着闪。
再说两种总线。SPI走D10(SS)、D11(MOSI)、D12(MISO)、D13(SCK)四根线,速度快,连SD卡、显示屏、无线模块常用;I2C/TWI只走A4(SDA)、A5(SCL)两根线,两根线就能挂一堆设备,用Wire库操作,接OLED、陀螺仪一挂一个准。
模拟输入也别忽略。A0-A5是6路10位ADC(分辨率0到1023),默认量程0到5V,用来读电位器、光敏、温度这类模拟量。想拉高量程或改参考电压,用AREF脚配合analogReference()设置。注意3.3V的传感器直接接模拟脚量程会偏,最好按参考电压适配。
最后给新手一句总结:数字引脚分通用IO、PWM、串口、SPI、外部中断几类,模拟引脚管AD采集和I2C。接线前先翻一眼芯片或板子的引脚图,确认复用功能和电压,基本不会接错。搞懂引脚,你就从照着例程抄,进阶到自己想接什么就接什么了。







之前只会在UNO上点灯,看到电源脚那段才明白为啥老烧片——VCC和GND真不能接反,眼泪都出来了。
收藏了。串口那段救了我狗命,原来RX TX要交叉接。
这篇把28个引脚讲得真清楚,我照着搭最小系统,最怕的就是D0的RX和D1的TX接反。提醒一句:PD6、PD7默认没接上拉,接按键要自己拉高,不然悬空会乱跳,我吃过这个亏。