|
使用下面的例子代码,不能使SIMO和CS为低电平:
' g- l5 J. s0 l% o" Tvoid PSCInit(void)
& E- b/ u1 W* C2 O3 @{+ a- F: _7 Y, {1 j
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);5 o2 v- C' E2 @7 X$ C
}
. B" N! k3 c7 p1 `+ ~: g
* G, R# C* z7 ~1 ~* {4 Svoid GPIOBankPinMuxSet(void)( h8 h8 w1 r- O& R! P
{
' R+ e$ g) y a // DRDY ------------ GPIO6[14] -- 111$ W2 A. u* g, M
// SPI1_CLK ------------ GPIO2[13] -- 46
/ y. b; c3 R% T; h: U. k // SPI1_SOMI------------ GPIO2[11] -- 440 r# D; A6 X/ c C) k" J& |: l
// SPI1_SIMO------------ GPIO2[10] -- 43
" d7 {' A9 K8 S' P5 J // SPI1_CS2 ------------ GPIO1[0] -- 173 b- j& J) U0 e8 ]) \
// SPI1_CS3 ------------ GPIO1[1] -- 189 ]" k( \' j# ~1 ~, s
1 g1 h6 ? D2 f/ o3 L
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
/ Y0 P+ p, [+ @, j$ _* ~7 G9 D% @/ U) _ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 u1 z4 d1 u8 U" V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- o( e J5 {$ e- s1 ^7 e1 I1 p4 t
~( v% Q0 l' P" M! z
//DRDY; I V9 P: U& Q0 F& ?8 ?! u' Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" X% m' Z. u) y# `2 C# ~
// CS2,CS3
3 }! T/ C( o0 I, m$ i GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! L0 U% S4 Q/ J( c8 v% O
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; k/ J: u* f- O O1 e/ e: W) H
//SIMO1 A$ S E- Q0 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# r; N) t6 {+ A4 [# J0 s
//SOMI4 l( w; ]5 H i4 C
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
% c: d8 \) {& k5 i- P# V0 U //CLK
( V9 Q; m, ^' ?# ?# G% _# M, j GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 U' H2 s+ v( R* b, W+ A
2 w' Q5 K# l2 K4 p: s // LDAC
) J5 Q/ u& K$ Q2 h" s, V! |) u GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" P& ]0 m7 a3 Q' a0 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# V! W/ d+ j& ? A# v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 z) B1 G" ?9 u5 d8 y# M% q, f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ B5 g9 @" N+ b4 c6 H' e5 G- l5 W, W GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( o/ C3 B$ y. z& Q1 M, G, \7 t}
. c' F) z8 l o, i8 q2 Z$ L- `5 f/ @; p
int main(void)1 P* a6 B8 [9 ~4 A* R( a6 [
{$ o m# K1 g6 U
// 外设使能
# z4 A2 Q, Z/ I6 I; K+ r- X PSCInit();, o5 ^; e6 Q$ \6 V$ n- l
$ L& D8 R% ^9 ~8 {8 P- L; L
4 W7 a: U5 J! `) _7 d4 }, T8 J // 管脚复用配置
" y, i# X* |5 D$ i( k5 z) { GPIOBankPinMuxSet();
2 P, q" n' _& @! D+ i% Q# ^ for(;;)7 V( M/ k7 }5 q
{$ `( b. P8 w* F, X5 m
SET_SCLK();//时钟正常输出
' t4 N9 d, e5 M: R% K e) h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. j: H I W9 f% J( P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3. Z6 [* x& Z9 _( r. E( U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
- \* Q O$ U0 g- U0 }; J9 P
& `" A" b- I% i9 N delay(20);
: c3 M6 l2 j4 d, }% o1 q6 t, ] CLR_SCLK();
0 l8 m4 }7 ^+ y& @4 L1 j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 N) E" `# n. y8 Y0 Z0 w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS37 J* Q/ W$ h( K% l; M2 S3 s" Z' u. `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 v& S8 Y1 d# [$ B5 A0 L' _ delay(20);
- G+ j% u+ C# D; w1 q. T }
, z/ K) ]9 M! o P! J+ `% s0 {}2 V* t, y, ~1 D0 B$ l1 J- R
|
|