|
|
使用下面的例子代码,不能使SIMO和CS为低电平:1 \+ z4 Y7 P. v0 U& I8 I1 C- d
void PSCInit(void)
& [1 T1 k$ ~- W: g: I{9 c- z+ L4 r. e! P1 |$ R
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
1 x/ f) n* `8 @ W$ O2 K}5 M5 q0 V2 a- f" W& q# g0 K9 m6 Z
( t4 n8 I+ K5 d- N2 H9 F/ svoid GPIOBankPinMuxSet(void) N1 Y' _" F3 F4 [' R3 ` X6 M' f
{
/ e* |, W" M- }' s; r; C: c$ t3 x* y // DRDY ------------ GPIO6[14] -- 111
3 C5 t3 X; c8 ]0 c // SPI1_CLK ------------ GPIO2[13] -- 46% \" A+ S3 e3 f% U! f
// SPI1_SOMI------------ GPIO2[11] -- 44) L, r4 Y$ U0 \9 m, U$ [9 e
// SPI1_SIMO------------ GPIO2[10] -- 43
, C2 Y3 r% F; v! H2 ? // SPI1_CS2 ------------ GPIO1[0] -- 17
" [+ R3 p5 }7 V. q; e2 w // SPI1_CS3 ------------ GPIO1[1] -- 18
9 a1 e3 p% z2 B6 @ S: \
; V' q1 a+ |/ g q3 H! T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
5 Q0 a& X( E1 @' W, z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% y& w) @* g2 j8 A* Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ b$ o6 E, i+ q
) n! V$ \: E; ~& ^. X9 w" P, Q
//DRDY. u" I h: Q+ O L3 G6 e
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
( j3 q, e6 H5 O: |7 o // CS2,CS3, H, `$ q, P+ Z7 X1 d$ Q1 O" A
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
% g0 \3 h8 R/ a# J" Q: `7 x GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, ~. r5 Z/ l% m4 E7 c! U
//SIMO
@/ H, `1 Y2 y2 g0 M# X, N5 L GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ ]/ l. E2 h$ }$ m: p8 s6 o: P //SOMI
! i- `8 g3 ~3 K5 U. h# @2 t q GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
# s' D+ P- d+ J1 g1 y7 @ //CLK
$ F [7 a& w* d; L+ t3 j, Q: P0 x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK+ F# L5 m7 a0 h
, e$ z. G( Y, a; d v, `4 h. f
// LDAC
, ~1 z4 \9 t% T8 F GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 K8 O: _5 u8 P% k, H d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 r- S- L/ R8 t; P$ U* ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" t+ l. K4 R! e# C" l GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 N" a, \+ _5 F! d8 p
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# Q0 t9 i9 }& J0 D/ _0 m# N# c" y
}
: \" H3 A3 h* e+ y
6 w9 z$ @) ~, K8 uint main(void)
+ K5 ~, w/ A+ c{8 U) n. u3 Y) |+ I, I
// 外设使能
4 K3 P% {& G0 G, C# V PSCInit();
# j3 O. s$ A( y
Q1 }. {$ z. {% G, D 1 h2 [- U5 V% x% u6 Z- Y( k
// 管脚复用配置 h% t0 g- C- b% P" g4 d. m( _
GPIOBankPinMuxSet();- w% l! g: E! }/ L s5 F
for(;;)
8 X! u( }3 e$ P {1 J! ^7 X8 l- h: e5 W+ M, ]
SET_SCLK();//时钟正常输出
( C7 z' v: {+ y+ G- R- {5 K3 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* G- g7 Y# H( M; k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ V q6 [; _! h& i9 f* d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. U" Z6 g$ y% H8 O% l
2 n2 W# s4 M1 Z0 m3 k' r1 {: J delay(20);6 x9 s4 E$ g. C# C k! a6 t
CLR_SCLK();
. D- y. {' s0 x& Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ e0 p! X# e! x7 A5 H0 v! N6 Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
) B9 Q" D* b1 j( e6 ]6 v% ~. m GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) l: Y: [9 b; z7 _: T delay(20);# w( V& q! C$ M% ]
}
5 _5 Z& F7 ~# s& g}; \) Q* H( c& [
|
|