|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
% B+ |; I% i1 o$ R* D: B9 D; wvoid PSCInit(void)
6 X" L) H1 N3 w# k{5 V" ?% P0 ]" U' r: ~
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 K" E" b, f8 I& ]' v5 Y- z7 G! u. f
}& w( i N" ]/ K u" e% o0 R& a
# [0 T4 p1 e% N( L3 x- n4 v( a2 a
void GPIOBankPinMuxSet(void); C# b; Z! Y: }! G8 D
{
, ~, G6 l; A- a/ v6 t // DRDY ------------ GPIO6[14] -- 111" k" S7 \: a' [7 m0 @7 q
// SPI1_CLK ------------ GPIO2[13] -- 46: N/ B+ h% N, J$ h8 N( j
// SPI1_SOMI------------ GPIO2[11] -- 44
% G4 w! b! z- S% D* j // SPI1_SIMO------------ GPIO2[10] -- 433 o t/ q$ }6 F. e( W* I( V+ y
// SPI1_CS2 ------------ GPIO1[0] -- 17
9 w4 u7 S9 }7 i' z+ I5 H4 D# h& _6 ~ // SPI1_CS3 ------------ GPIO1[1] -- 18 Q" m% m% w& V% i2 w
& y" U# L& z1 j0 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" Y3 w9 z3 x! j: l- r- k
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( e$ u; j6 s: {5 q$ C! P9 _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
: B: \( o- T! b( M6 r- N8 f C3 f' h% t
/ \% ]% [6 @0 b( y1 \, G% L, u' P% ?0 { //DRDY
$ ~' h( ~8 m# f, R GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY, H s: ?( |2 t3 J" h: y
// CS2,CS3
4 o- V7 {/ b' p: u GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2+ B, ?2 r6 k, ?, M$ O
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; G y4 z z T* Y( v# |
//SIMO
! W" R% B+ N1 |$ X8 u9 E: \- e! J GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
$ u3 O& c4 [) I+ O2 N //SOMI+ E, f7 Z k( `4 ?7 g
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI( g: v: v- i# j. W \+ r
//CLK
3 s. i# V* Y# A, U8 | GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 i* Q, K" s2 k: J7 W7 Q3 f
' E/ [, d) c5 Z/ {7 ]% i! E1 Y // LDAC
5 Q I* E4 x7 B+ ?9 v- h |8 v0 g/ e GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# V% G; a' W: ` }- y3 C: X( l7 S$ M GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
t! @( W9 P( ^- n- j* B7 C) e" Z" h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 P! |: J( w$ M6 j5 v, }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& Q) l8 n! t' u y2 V. ~8 V9 i1 Z GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: |% s& J L3 ^6 f8 Y0 X}$ {3 F% z, M: v1 ~) }% M6 k
% l; D& P2 f" F7 _2 ~/ xint main(void)
, t2 J: ~. G$ g0 _9 R{
: x% {+ l4 {9 f; b6 U9 |0 x // 外设使能
5 b8 [2 } ~! k1 s$ J1 f- o PSCInit();; w ` U0 Z$ m0 R) }% z
6 [# `3 W$ S& n. a! A9 n
: C: V: ~; W# W7 b$ B
// 管脚复用配置2 u. L4 v. d6 ~$ o
GPIOBankPinMuxSet();
' R2 r# L# N5 ~" g4 G5 ?2 | for(;;)
( d+ @1 q# ?, c' J1 l {: M* j1 v( ]' E
SET_SCLK();//时钟正常输出+ j+ f* U/ T8 y* R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. b. a( A% T- ~0 M- H! \
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3; `! H3 ^* m$ d, x2 n7 |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
% h# x! T* [- N' @+ `$ i" r5 K3 c" F
$ _( ]9 p* H. f1 z! \- v delay(20);
$ U* j/ p5 u f. I CLR_SCLK();
. g' ]# `/ D1 w0 M+ Y" n4 s- i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS32 S& T* j( t* ? y1 g" W1 A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3 Y2 B8 G# H- Y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: \4 O1 ~( G* ?$ r: i delay(20);
4 P: n& [0 V$ W \+ K$ v/ ? }
- U7 `$ V7 n5 j, n$ o}
+ r# t; v8 r9 b& `9 ~2 S( n |
|