|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ k1 s8 ]& A" W9 v/ Lvoid PSCInit(void)
* n: B4 S: ?4 h3 L0 Y{
1 t) H, M8 g5 F* z) g PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, n$ i$ n& ^# B3 W3 H/ ~: _
}
; u* h# C$ Y/ i6 N$ b8 N5 X1 [9 U6 M% F6 o
void GPIOBankPinMuxSet(void)7 _& r7 S! S! I- b
{' U8 G- Q/ C6 b$ [
// DRDY ------------ GPIO6[14] -- 111+ |% Y: Z* F5 U
// SPI1_CLK ------------ GPIO2[13] -- 46) b) U7 L- X2 X& x T0 j4 i, x/ |. @
// SPI1_SOMI------------ GPIO2[11] -- 44
" E4 t# L4 S8 x // SPI1_SIMO------------ GPIO2[10] -- 43
3 l5 R) ^& Z3 \& Y // SPI1_CS2 ------------ GPIO1[0] -- 17% i4 `, k! ?1 S; D% C R
// SPI1_CS3 ------------ GPIO1[1] -- 18
3 s' x) r/ F5 ^' g- I4 ~! r, U& A/ C- [$ A9 \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% C7 l# J; `! O$ f2 h( m& ]( `- { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; L* K7 E; J$ x P @7 j
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 H& i3 K8 s" [. ?, B3 x
* z, z' v: _ V
//DRDY5 b/ I ^. O9 _+ A( k
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY3 u: h- p7 n) e8 K/ L% R
// CS2,CS3$ s# m0 G8 ^( A4 R" g* i1 {
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
( }2 }7 z9 F, {+ s- O l6 P GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: `, o- ^/ M. n) H( k //SIMO( _% \3 M5 T$ Z
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 S: v; U: v u- o
//SOMI
' C2 W9 u1 {$ _3 X; Z) F. V+ } GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 n# V) G+ D" n
//CLK
- ^. m; S3 W+ f GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: c1 Y: p. @! W4 w( x/ B3 G& s+ ]* v* \2 A- a
// LDAC& [/ \; j( @1 M# \ s9 K
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) z, e, Q; o( A4 X( d9 c GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 n$ @9 J' K9 u3 a8 a% q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 ~2 O* b1 H8 F! E' _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
, B8 p3 a6 b; b GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY' R8 z# E" A# D5 n! g
}5 }5 r# c3 ]# a$ M0 D
- s5 E: L) R5 _$ O% A5 fint main(void)
E+ ]" _7 Q2 _/ O5 h{
2 Z$ {8 Q% j7 ?+ b* g' f* W* r2 l // 外设使能# b) ~6 M6 T; F- @
PSCInit();
3 W) Q! g; o: J8 |1 B
9 F* P& D, M) J 5 x1 i1 s* f b' N9 |
// 管脚复用配置4 D g% v- U; g0 N4 |. M# h
GPIOBankPinMuxSet();% }& M0 ^5 s- N0 ^. M3 F7 T
for(;;)6 b7 y" @( I; h% G) a# s
{
* h% j! j f, e: y8 r SET_SCLK();//时钟正常输出
; z; a* ]$ d: u: r) R3 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 q& u; J1 _' w& r' G8 X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& t/ f% q8 U6 @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN& R: M) }; t& l0 Z0 ^
1 F" F+ a" }' J
delay(20);
+ _# O- J. D% e/ @) p% q: k: ~ CLR_SCLK();
5 ?4 K2 |/ P1 R, r) j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
+ b6 ] x4 B* @+ I1 { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 z- c2 J+ e, i# X( e GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, a0 W) n6 v+ W
delay(20);
4 B4 ]1 h5 S6 o/ d3 s# l }
, Q' _) c0 e: r# \}- {2 q& g8 a) p. q, U
|
|